2010-09-22 79 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