2008-10-17 17 views
26

Si tengo un método como:¿Cómo puede obtener los nombres de los parámetros del método?

public void MyMethod(int arg1, string arg2) 

¿Cómo hago para conseguir los nombres reales de los argumentos? Parece que no puedo encontrar nada en el MethodInfo que realmente me dará el nombre del parámetro.

me gustaría escribir un método que se parece a esto:

public static string GetParamName(MethodInfo method, int index) 

Así que si llamara a este método con:

string name = GetParamName(MyMethod, 0) 

volvería "arg1". es posible?

Respuesta

50
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 de arriba debe hacer lo que necesita.

3

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

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

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

Usted podría utilizar 'Func <TResult>' y derivados para hacer este trabajo para la mayoría de las situaciones

+3

la comprobación de errores es solo una cuestión de problemas. –

+3

@TomAnderson: copiar código a ciegas de Internet también es un problema. –

Cuestiones relacionadas