2010-09-22 31 views
12

kullanılarak statik yöntemi çağrılırken ben bu iki sınıf vardır: sorun yansıma ve C#

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

} 

şimdi ben yansıma kullanarak sınıf Video newItem() yöntemi çağırmak istiyorum. bu ile deneyin:

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

nesne inf bu satırı çalıştırdıktan sonra hala boş. Video sınıfında statik NewItem() yöntemini çağırabilir miyim?

cevap

18

Sen BindingFlags.Static ilaveten BindingFlags.Public ve BindingFlags.FlattenHierarchy specifiy gerekir:

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

Alternatif olarak, BindingFlags.FlattenHierarchy olmadan ilan türünden yöntemini alabilirsiniz:

MethodInfo inf = typeof(Item<Video>).GetMethod("NewItem", 
    BindingFlags.Static | BindingFlags.Public); 

Ben her iki yönde denedim ve ikisi de çalışıyor.

+1

Teşekkürler adamım. çalışır. Cevabını kabul edeceğim. çok teşekkürler.. – backdoor