¿Cómo puede obtener los nombres de los parámetros del método?

Si tengo un método como:

public void MyMethod(int arg1, string arg2) 

¿Cómo podría obtener los nombres reales de los argumentos? Parece que no puedo encontrar nada en MethodInfo que realmente me dé el nombre del parámetro.

Me gustaría escribir un método que se vea así:

 public static string GetParamName(MethodInfo method, int index) 

Entonces, si llamé a este método con:

 string name = GetParamName(MyMethod, 0) 

devolvería “arg1”. es posible?

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

La muestra anterior debe hacer lo que necesita.

Pruebe algo como esto:

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

sin ningún tipo de comprobación de errores:

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

Puede usar ‘Func ‘ y derivados para hacer que esto funcione para la mayoría de las situaciones

nameof(arg1) devolverá el nombre de la variable arg1

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