2008-10-17 8 views
26

Wenn ich habe eine Methode, wie zum Beispiel:Wie können Sie die Namen der Methodenparameter erhalten?

public void MyMethod(int arg1, string arg2) 

Wie würde ich mich über die tatsächlichen Namen der Argumente zu bekommen? Ich kann nichts in der MethodInfo finden, die mir tatsächlich den Namen des Parameters geben wird.

Ich möchte eine Methode schreiben, die wie folgt aussieht:

public static string GetParamName(MethodInfo method, int index) 

Also, wenn ich diese Methode mit genannt:

string name = GetParamName(MyMethod, 0) 

wäre es "arg1" zurückzukehren. Ist das möglich?

Antwort

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; 
} 

Die obige Probe sollte tun, was Sie brauchen.

3

so etwas wie dieses Versuchen:

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; 
} 
1

ohne jede Art von Fehlerprüfung:

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

Sie könnten verwenden 'Func <TResult>' und Derivate, um diese Arbeit zu machen für die meisten Situationen

+3

keine fehlerprüfung fragt nur nach problemen. –

+3

@TomAnderson - blindes Kopieren von Code aus dem Internet verlangt auch Ärger! –