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 ?

Était-ce utile?

La solution

Cette question a été posée auparavant, et cela peut faire via l'API CODEDOM.Voir Ce et Ceci .Notez que ces mots-clés (INT, BOOL, etc.) sont spécifiques à la langue, de sorte que si vous émettez ceci pour un consommateur général .NET, les noms de type de structure sont généralement préférés.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top