Wenn ich eine Klasse namens habe MyProgram
, gibt es eine Möglichkeit, " MyProgram " als Zeichenfolge abzurufen ?
c#
reflection
deltanovember
quelle
quelle
nameof
Operator verwenden.Ich wollte das für ein gutes Maß werfen. Ich denke, die Art und Weise, wie @micahtan gepostet hat, wird bevorzugt.
quelle
nameof(MyProgram)
.Mit C # 6.0 können Sie den
nameof
Operator verwenden:quelle
Obwohl die Antwort von micahtan gut ist, funktioniert sie bei einer statischen Methode nicht. Wenn Sie den Namen des aktuellen Typs abrufen möchten, sollte dieser überall funktionieren:
quelle
Wenn Sie einen Typ haben, der von einem anderen erbt, können Sie ihn auch als Referenz verwenden
quelle
Wenn Sie dies in abgeleiteten Klassen benötigen, können Sie diesen Code in die Basisklasse einfügen:
Dann können Sie den Namen in der abgeleiteten Klasse erreichen. Gibt den abgeleiteten Klassennamen zurück. Wenn Sie das neue Schlüsselwort "nameof" verwenden, ist dies natürlich nicht erforderlich.
Außerdem können Sie dies definieren:
Und dann verwenden Sie wie folgt:
quelle
Benutze das
Angenommen , Application Test.exe wird ausgeführt und die Funktion ist foo () in form1 [im Grunde ist es die Klasse form1 ]. Dann wird der obige Code unter der Antwort generiert.
Dies wird zurückkehren.
für Funktionsname:
wird zurückkehren
Hinweis, wenn Sie dies in Ausnahmefällen verwenden möchten:
quelle
[Nullable(2)]
sodass Sie eine Warnung erhalten, wenn die Nullprüfung aktiv ist.this
kann ausgelassen werden. Alles, was Sie brauchen, um den aktuellen Klassennamen zu erhalten, ist:quelle
Aktuellen Klassennamen von Asp.net abrufen
quelle
[Nullable(2)]
sodass Sie eine Warnung erhalten, wenn die Nullprüfung aktiv ist.