Como você pode obter os nomes dos parâmetros do método?

Se eu tiver um método como:

public void MyMethod(int arg1, string arg2) 

Como eu poderia conseguir os nomes reais dos argumentos? Eu não consigo encontrar nada no MethodInfo que realmente me dará o nome do parâmetro.

Eu gostaria de escrever um método que se parece com isso:

 public static string GetParamName(MethodInfo method, int index) 

Então, se eu chamei esse método com:

 string name = GetParamName(MyMethod, 0) 

ele retornaria “arg1”. Isso é possível?

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

A amostra acima deve fazer o que você precisa.

Tente algo assim:

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

sem qualquer tipo de verificação de erros:

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

Você poderia usar ‘Func ‘ e derivativos para fazer este trabalho para a maioria das situações

nameof(arg1) retornará o nome da variável arg1

https://msdn.microsoft.com/pt-br/library/dn986596.aspx