Holen Sie sich die MethodInfo-Signatur
-
11-12-2019 - |
Frage
Angenommen, Sie haben eine MethodInfo zur Methode myMethod:
void myMethod(int param1, int param2) { }
und Sie möchten eine Zeichenfolge erstellen, die die Signatur der Methode darstellt:
string myString = "myMethod (int, int)";
Beim Durchlaufen der MethodInfo-Parameter konnte ich diese Ergebnisse erzielen, indem ich die ToString-Methoden der Parametertypen aufrief:
"myMethod (System.Int32, System.Int32)"
Wie kann ich dies verbessern und die oben gezeigten Ergebnisse erzielen?
Andere Tipps
Soweit ich weiß, gibt es nichts eingebautes, das das konvertieren kann real Typname eines Primitivs (System.Int32
) zum integrierten Alias (int
).Da es nur eine sehr kleine Anzahl dieser Aliase gibt, ist es nicht allzu schwierig, eine eigene Methode zu schreiben:
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
}
Davon abgesehen, wenn der Benutzer tatsächlich tat eintippen System.Int32
statt int
(was natürlich völlig legal wäre) Diese Technik würde immer noch „int“ ausdrucken.Dagegen kann man nicht viel machen, weil System.Type
ist in beiden Fällen gleich – Sie können also nicht herausfinden, welche Variante der Benutzer tatsächlich eingegeben hat.