【发布时间】:2011-09-13 15:55:24
【问题描述】:
我在 .NET 3.5 中尝试了以下代码,但 mi 为空。 如何调用私有泛型方法以便可以在运行时传递类型参数? 如果 SaveEntityGeneric 被标记为公共,则此代码可以正常工作,但我不想将其公开,因为它仅用于同一类中的其他方法中,以使用 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>()
{
}
}
【问题讨论】:
-
这个问题有你所需要的一切:Select Right Generic Method with Reflection
-
@spender:这个问题是关于公共静态方法(不需要绑定标志来查找)。这是关于私有实例方法的。它不是重复的。
-
@StriplingWarrior:同意。幸运的是,关闭一个问题需要 5 个人。
标签: c#