我有这两个课程:
Item<T> : BusinessBase<T> where T : Item<T>
{
public static T NewItem()
{
//some code here
}
}
Video : Item <Video>
{
}
现在我想使用反射在类Video上调用 NewItem()方法。 当我尝试这个时:
MethodInfo inf = typeof(Video).GetMethod("NewItem", BindingFlags.Static);
执行此行后,对象 inf 仍为null。 我可以在类Video上调用静态 NewItem()方法吗?
答案 0 :(得分:18)
除了BindingFlags.Public之外,您还需要指定BindingFlags.FlattenHierarchy和BindingFlags.Static:
MethodInfo inf = typeof(Video).GetMethod("NewItem",
BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);
或者,您可以从没有BindingFlags.FlattenHierarchy的声明类型获取方法:
MethodInfo inf = typeof(Item<Video>).GetMethod("NewItem",
BindingFlags.Static | BindingFlags.Public);
我已经尝试了两种方式,但它们都有效。