[英]How to call private generic method in C# passing type in runtime
我在.NET 3.5中嘗試過以下代碼,但mi為null。 如何調用私有泛型方法以便在運行時傳遞類型參數? 如果將SaveEntityGeneric標記為public,則此代碼可以正常工作,但我不打算將其公開,因為它僅用於同一類中的其他方法,以使用GetType()傳遞此類類型。
using System.Reflection;
public class Main1
{
static void Main()
{
new Class1().Test();
}
}
class Class1
{
public void Test()
{
var mi = GetType().GetMethod("SaveEntityGeneric", BindingFlags.NonPublic);
// why mi is null ?
var gm = mi.MakeGenericMethod(GetType());
gm.Invoke(this, null);
}
void SaveEntityGeneric<TEntity>()
{
}
}
綁定標志很難搞清楚。 使用BindingFlags.NonPublic | BindingFlags.Instance
BindingFlags.NonPublic | BindingFlags.Instance
。
var mi = GetType().GetMethod("SaveEntityGeneric",
BindingFlags.NonPublic | BindingFlags.Instance);
var gm = mi.MakeGenericMethod(GetType());
gm.Invoke(this, null);
只需將其設置為內部 ,即可防止在程序集外部使用該方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.