2008-10-17 10 views
26

Si j'ai une méthode telle que:Comment pouvez-vous obtenir les noms des paramètres de la méthode?

public void MyMethod(int arg1, string arg2) 

Comment pourrais-je faire pour obtenir les noms réels des arguments? Je n'arrive pas à trouver quoi que ce soit dans MethodInfo qui me donnera le nom du paramètre.

Je voudrais écrire une méthode qui ressemble à ceci:

public static string GetParamName(MethodInfo method, int index) 

Donc, si j'ai appelé cette méthode avec:

string name = GetParamName(MyMethod, 0) 

il retournerait "arg1". Est-ce possible?

Répondre

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

L'exemple ci-dessus devrait faire ce dont vous avez besoin.

3

Essayez quelque chose comme ceci:

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

sans aucune vérification d'erreur:

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

Vous pouvez utiliser 'Func <TResult>' et ses dérivés pour faire ce travail pour la plupart des situations

+3

Aucune vérification d'erreur ne vous demande des problèmes. –

+3

@ TomAnderson - copiant aveuglément le code d'Internet demande aussi des problèmes! –

Questions connexes