Как вы можете получить имена параметров метода? - PullRequest
31 голосов
/ 18 октября 2008

Если у меня есть такой метод, как:

public void MyMethod(int arg1, string arg2)

Как мне узнать фактические имена аргументов? Кажется, я не могу найти ничего в MethodInfo, которое действительно даст мне имя параметра.

Я хотел бы написать метод, который выглядит следующим образом:

public static string GetParamName(MethodInfo method, int index)

Итак, если бы я вызвал этот метод с помощью:

string name = GetParamName(MyMethod, 0)

он вернул бы "arg1". Это возможно?

Ответы [ 4 ]

58 голосов
/ 18 октября 2008
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;
}

Приведенный выше пример должен делать то, что вам нужно.

4 голосов
/ 18 октября 2008

Попробуйте что-то вроде этого:

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 голосов
/ 16 ноября 2016

nameof(arg1) вернет имя переменной arg1

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

1 голос
/ 18 октября 2008

без какой-либо проверки ошибок:

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

Вы можете использовать 'Func ' и производные, чтобы сделать эту работу для большинства ситуаций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...