C # erhält seinen eigenen classnnamen

Wenn ich eine class namens MyProgram , gibt es eine Möglichkeit, ” MyProgram ” als String abzurufen?

Versuche dies:

 this.GetType().Name 

Ich wollte das für ein gutes Mass hochcasting. Ich denke, die Art, wie @michtan gepostet wird, wird bevorzugt.

 typeof(MyProgram).Name 

Obwohl Micahtans Antwort gut ist, wird es in einer statischen Methode nicht funktionieren. Wenn Sie den Namen des aktuellen Typs abrufen möchten, sollte dieser überall funktionieren:

 string className = MethodBase.GetCurrentMethod().DeclaringType.Name; 

Mit C # 6.0 können Sie den nameof Operators verwenden:

 nameof(MyProgram) 

Als Referenz können Sie auch verwenden, wenn Sie einen Typ haben, der von einem anderen erbt

 this.GetType().BaseType.Name 

Wenn Sie dies in abgeleiteten classn benötigen, können Sie diesen Code in die Basisklasse einfügen:

 protected string GetThisClassName() { return this.GetType().Name; } 

Dann können Sie den Namen in der abgeleiteten class erreichen. Gibt den abgeleiteten classnnamen zurück. Natürlich wird es bei Verwendung des neuen Schlüsselwortes “nameof” nicht nötig sein, dass diese Sorte wirkt.

Außerdem können Sie dies definieren:

 public static class Extension { public static string NameOf(this object o) { return o.GetType().Name; } } 

Und dann benutze es so:

 public class MyProgram { string thisClassName; public MyProgram() { this.thisClassName = this.NameOf(); } } 

Benutze das

Sagen wir, Application Test.exe läuft und function ist foo () in form1 [im Grunde ist es class form1 ], dann wird oben Code generiert unterhalb der Antwort.

 string s1 = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name; 

Dies wird zurückkehren.

 s1 = "TEST.form1" 

für functionsname:

 string s1 = System.Reflection.MethodBase.GetCurrentMethod().Name; 

wird zurückkehren

 s1 = foo 

Beachten Sie, wenn Sie dies bei der Ausnahmebenutzung verwenden möchten:

 catch (Exception ex) { MessageBox.Show(ex.StackTrace ); } 

Holen Sie sich den aktuellen classnnamen von Asp.net

 string CurrentClass = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString(); 

this kann weggelassen werden. Alles, was Sie benötigen, um den aktuellen classnnamen zu erhalten, ist:

 GetType().Name