2008-10-17 31 views
26

अगर मैं इस तरह के रूप में एक विधि है:आप विधि पैरामीटर के नाम कैसे प्राप्त कर सकते हैं?

public void MyMethod(int arg1, string arg2) 

मैं तर्क की वास्तविक नाम करने के बारे में कैसे जाना होगा? मुझे MethodInfo में कुछ भी नहीं मिल रहा है जो वास्तव में मुझे पैरामीटर का नाम देगा।

मैं एक तरीका है जिसके इस तरह दिखता है लिखने के लिए करना चाहते हैं:

public static string GetParamName(MethodInfo method, int index) 

मैं के साथ इस विधि कहा जाता है तो अगर:

string name = GetParamName(MyMethod, 0) 

यह "ARG1" लौट आते हैं। क्या यह संभव है?

उत्तर

50
public static string GetParamName(System.Reflection.MethodInfo method, int index) 
{ 
    string retVal = string.Empty; 

    if (method != null && method.GetParameters().Length > index) 
     retVal = method.GetParameters()[index].Name; 


    return retVal; 
} 

उपर्युक्त नमूना आपको जो चाहिए वह करना चाहिए। त्रुटि जाँच के किसी भी प्रकार के बिना

foreach(ParameterInfo pParameter in pMethod.GetParameters()) 
{ 
    //Position of parameter in method 
    pParameter.Position; 

    //Name of parameter type 
    pParameter.ParameterType.Name; 

    //Name of parameter 
    pParameter.Name; 
} 
3

कुछ इस तरह का प्रयास करें

public static string GetParameterName (Delegate method , int index) 
{ 
    return method.Method.GetParameters () [ index ].Name ; 
} 

आप ज्यादातर स्थितियों

के लिए यह काम करने के लिए 'समारोह <TResult>' और डेरिवेटिव इस्तेमाल कर सकते हैं
1

:

+3

कोई त्रुटि जांच केवल परेशानी के लिए पूछ रही है। –

+3

@ टॉम एंडरसन - अंधेरे से इंटरनेट से कोड कॉपी करना भी परेशानी के लिए पूछ रहा है! –

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

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