Как вы можете получить имена параметров метода?
Если у меня есть метод, например:
public void MyMethod(int arg1, string arg2)
Как мне получить фактические имена аргументов?
Я не могу найти ничего в MethodInfo, который фактически даст мне имя параметра.
Я хотел бы написать метод, который выглядит так:
public static string GetParamName(MethodInfo method, int index)
Итак, если я вызвал этот метод с помощью:
string name = GetParamName(MyMethod, 0)
он вернет "arg1". Возможно ли это?
Ответы
Ответ 1
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;
}
Вышеприведенный образец должен делать то, что вам нужно.
Ответ 2
Попробуйте что-то вроде этого:
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 ;
}
Вы можете использовать 'Func <TResult> ' и производные, чтобы сделать эту работу для большинства ситуаций.
Ответ 4
nameof(arg1)
вернет имя переменной arg1
https://msdn.microsoft.com/en-us/library/dn986596.aspx