Obtenir la signature MethodInfo
-
11-12-2019 - |
Question
Supposons que vous ayez un MethodInfo relatif à la méthode myMethod :
void myMethod(int param1, int param2) { }
et vous souhaitez créer une chaîne qui représente la signature de la méthode :
string myString = "myMethod (int, int)";
En parcourant les paramètres MethodInfo, j'ai pu obtenir ces résultats en appelant les méthodes ToString des types de paramètres :
"myMethod (System.Int32, System.Int32)"
Comment puis-je améliorer cela et produire les résultats indiqués ci-dessus ?
La solution
Autres conseils
Pour autant que je sache, il n'y a rien de intégré qui convertirait le réel tapez le nom d'une primitive (System.Int32
) à l'alias intégré (int
).Comme il n’existe qu’un très petit nombre de ces alias, il n’est pas trop difficile d’écrire votre propre méthode :
public static string GetTypeName(Type type)
{
if (type == typeof(int)) // Or "type == typeof(System.Int32)" -- same either way
return "int";
else if (type == typeof(long))
return "long";
...
else
return type.Name; // Or "type.FullName" -- not sure if you want the namespace
}
Cela étant dit, si l'utilisateur a fait tapez System.Int32
plutôt que int
(ce qui bien sûr serait parfaitement légal), cette technique afficherait toujours "int".Vous ne pouvez pas faire grand-chose à ce sujet parce que System.Type
est la même dans les deux cas : vous n'avez donc aucun moyen de savoir quelle variante l'utilisateur a réellement saisie.