2009-12-28 18 views
76

मैं एक प्रकार पर एक स्थिर विधि पार्स लागू कर रहा हूँ प्रतिबिंब के माध्यम से, क्योंकि मैं संकलन समय पर वस्तु के प्रकार पता नहीं है से बचना (मैं नहीं पता है, तथापि, यह एक पार्स विधि है , एक स्ट्रिंग लेना)।एक अस्पष्ट मैच अपवाद

हालांकि, मुझे एक संदिग्ध मैच अपवाद मिल रहा है, संभवतः क्योंकि पार्स विधियों को एक ही ऑब्जेक्ट (स्ट्रिंग, int, डबल इत्यादि) लेते हैं।

यह सुनिश्चित करने के लिए कि मैं सही विधि (पार्स (स्ट्रिंग्स)) तक पहुंचने के लिए अपने विधि आमंत्रण में और अधिक विशिष्ट कैसे हो सकता हूं और अपवाद नहीं फेंक दिया गया है।

मेरे कोड इस तरह दिखता है:

Type returnType = p.PropertyType; 
object value = returnType.GetMethod("Parse").Invoke(null, new string[] { "1" }); 

उत्तर

139

उपयोग this अधिभार और प्रयोग

returnType.GetMethod("Parse", new [] {typeof(string)}) 
+6

@Bitterblue मैं उलझन में हूँ तुम क्यों कि टिप्पणी लिखने चाहते हैं - और तुम क्यों मामलों पर विचार चर्चा के लायक शैली का? –

+7

प्रेजेंटेशन ठीक है, यह एक अलग शैली का पालन करने के लिए होता है जिसे आप पसंद करते हैं। आपने इस बाइक शेड का उपयोग करने के लिए टिप्पणी की, अगर यह थोड़ा और नीला हो "। जो मुझे भ्रमित करता है। टिप्पणी संपादित करना: जब तक आप इस बात से अनजान न हों कि नया [] {} वास्तव में इस प्रकार के नए प्रकार [] के बराबर ऐरे के प्रकार और _IS_ के प्रकार का अनुमान लगाता है? उस मामले में मुझे खेद है - मुझे लगता है कि आप स्टाइल (दोनों काम) पर टिप्पणी करते हैं जबकि संभावित रूप से स्निपेट गलत सोच रहा है (यह नहीं है)। –

+1

उत्तर के लिए धन्यवाद, दोस्तों। अगले व्यक्ति को कुछ प्रकार की परेशानी बचाने के लिए, संदर्भ प्रकारों के लिए, इस तरह कुछ उपयोग करें: टाइपऑफ (स्ट्रिंग) .MakeByRefType(); – BRebey

-2
if (assembly != null) 
{ 
    List<System.Reflection.MethodInfo> mInfo = new List<System.Reflection.MethodInfo>(); 
    Type myType = null; 

    foreach (Type item in assembly.GetTypes()) 
    { 
    mInfo.Clear(); 
    mInfo = item.GetMethods().ToList(); 
    foreach (System.Reflection.MethodInfo item2 in mInfo) 
    { 
     if (item2.Name == methodName) 
     { 
     Method = item2; 
     break; 
     } 
    } 
    } 

    stateInstance = Activator.CreateInstance(myType); 
} 
return Method; 
+0

'विधि' कहां से आया? इससे आपके कोड के बारे में कुछ समझाने में कोई दिक्कत नहीं होगी। – LarsTech

+4

हां, कृपया कोड केवल उत्तर से बचें। क्या हो रहा है, या आपका उत्तर सहायक क्यों हो सकता है इसके बारे में कुछ स्पष्टीकरण जोड़ें। –

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