2010-09-22 83 views
12

静态方法我有这样两类:麻烦调用使用反射和c#

Item<T> : BusinessBase<T> where T : Item<T> 
{ 
    public static T NewItem() 
    { 
     //some code here 
    } 
} 
Video : Item <Video> 
{ 

} 

现在我想使用反射来调用的newitem()方法上一流的视频。 当我尝试用这样的:

MethodInfo inf = typeof(Video).GetMethod("NewItem", BindingFlags.Static); 

对象INF执行这条线后,仍然为空。 我可以调用静态类视频NewItem()方法吗?

回答

18

您除了需要specifiy BindingFlags.PublicBindingFlags.FlattenHierarchyBindingFlags.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); 

我已经试过两种方式他们都工作。

+1

谢谢你。这行得通。我会接受你的回答。非常感谢.. – backdoor 2010-09-22 14:40:39