Frage Wie können Sie die Namen von Methodenparametern erhalten?


Wenn ich eine Methode wie:

public void MyMethod(int arg1, string arg2)

Wie würde ich die tatsächlichen Namen der Argumente ermitteln? Ich kann nichts in der MethodInfo finden, die mir tatsächlich den Namen des Parameters gibt.

Ich möchte eine Methode schreiben, die so aussieht:

public static string GetParamName(MethodInfo method, int index)

Also wenn ich diese Methode anrufe mit:

string name = GetParamName(MyMethod, 0)

es würde "arg1" zurückgeben. Ist das möglich?


28
2017-10-17 22:56


Ursprung


Antworten:


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

Das obige Beispiel sollte tun, was Sie brauchen.


53
2017-10-17 22:57



Versuchen Sie etwas wie folgt:

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
2017-10-17 23:01



ohne irgendeine Art von Fehlerüberprüfung:

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

Sie können "Func <TResult>" und Derivate verwenden, um dies für die meisten Situationen zu nutzen


1



nameof(arg1) Gibt den Namen der Variablen zurück arg1

https://msdn.microsoft.com/en-us/library/dn986596.aspx


1