我有这两个班:
Item<T> : BusinessBase<T> where T : Item<T>
{
public static T NewItem()
{
//some code here
}
}
Video : Item <Video>
{
}
Run Code Online (Sandbox Code Playgroud)
现在我想使用反射在类Video上调用NewItem()方法.当我尝试这个:
MethodInfo inf = typeof(Video).GetMethod("NewItem", BindingFlags.Static);
Run Code Online (Sandbox Code Playgroud)
执行此行后的对象inf仍为null.我可以在类Video上调用静态NewItem()方法吗?
dtb*_*dtb 18
你需要指定BindingFlags.Public和BindingFlags.FlattenHierarchy以及BindingFlags.静态:
MethodInfo inf = typeof(Video).GetMethod("NewItem",
BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);
Run Code Online (Sandbox Code Playgroud)
或者,您可以从声明类型获取方法而不使用BindingFlags.FlattenHierarchy:
MethodInfo inf = typeof(Item<Video>).GetMethod("NewItem",
BindingFlags.Static | BindingFlags.Public);
Run Code Online (Sandbox Code Playgroud)
我已经尝试过两种方式,但它们都有效.