2010-09-22 18 views
12

लागू मैं इस दो वर्गों है:मुसीबत स्थिर पद्धति का उपयोग करके प्रतिबिंब और ग #

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 अभी भी रिक्त है: जब मैं इस के साथ प्रयास करें। क्या मैं क्लास वीडियो पर स्थिर न्यूइटम() विधि का आह्वान कर सकता हूं?

उत्तर

18

आप BindingFlags.Static के अलावा BindingFlags.Public और BindingFlags.FlattenHierarchy specifiy की जरूरत है:

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

संबंधित मुद्दे