2010-02-08 17 views
8

के खिलाफ एक विधिइन्फो की जांच करना मैं कैसे निर्धारित कर सकता हूं कि कोई MethodInfo एक अलग प्रतिनिधि प्रकार फिट बैठता है या नहीं?एक प्रतिनिधि

bool IsMyDelegate(MethodInfo method); 

संपादित करें: मैं एक MethodInfo वस्तु दिया हूँ और जानना चाहते हैं कि यह प्रतिनिधि इंटरफेस फिट बैठता है चाहता हूँ। अलावा स्पष्ट

private bool IsValidationDelegate(MethodInfo method) 
    { 
     var result = false; 
     var parameters = method.GetParameters(); 
     if (parameters.Length == 2 && 
      parameters[0].ParameterType == typeof(MyObject1) && 
      parameters[1].ParameterType == typeof(MyObject2) && 
      method.ReturnType == typeof(bool)) 
     { 
      result = true; 
     } 
     else 
     { 
      m_Log.Error("Validator:IsValidationDelegate", "Method [...] is not a ValidationDelegate."); 
     } 
     return result; 
    } 
+0

क्या आप कृपया अपने प्रश्न को दोबारा लिख ​​सकते हैं। यह स्पष्ट नहीं है कि आप क्या जानना चाहते हैं। – Steven

+0

क्या मदद करता है? –

+0

क्या आप संकलन समय समर्थन के लिए पूछ रहे हैं? – Steven

उत्तर

11

तो method एक स्थिर तरीका है से:

bool isMyDelegate = 
    (Delegate.CreateDelegate(typeof(MyDelegate), someObj, method, false) != null) 

(दुर्भाग्य से आप इस मामले क्योंकि में एक उदाहरण की जरूरत है:

bool isMyDelegate = 
    (Delegate.CreateDelegate(typeof(MyDelegate), method, false) != null); 

तो method एक उदाहरण विधि है Delegate.CreateDelegate एक प्रतिनिधि उदाहरण को बांधने की कोशिश करने जा रहा है, भले ही इस मामले में हम सभी इस पर ध्यान दें कि प्रतिनिधि या बनाया जा सकता है नहीं।)

दोनों मामलों में, चाल MethodInfo से इच्छित प्रकार की एक प्रतिनिधि बनाने के लिए नेट पूछने के लिए, लेकिन कोई अपवाद फेंक अगर विधि है बजाय अशक्त लौटने के लिए मूल रूप से है गलत हस्ताक्षर फिर शून्य के खिलाफ परीक्षण हमें बताता है कि प्रतिनिधि के पास सही हस्ताक्षर था या नहीं।

ध्यान दें कि यह वास्तव में प्रतिनिधि बनाने की कोशिश करता है, यह आपके लिए सभी प्रतिनिधि भिन्नता नियमों को भी संभालेगा (उदाहरण के लिए जब विधि वापसी प्रकार संगत है लेकिन प्रतिनिधि वापसी प्रकार के समान नहीं है)।

+0

अच्छा। धन्यवाद, बिल्कुल मुझे क्या चाहिए। –