C # obtiene su propio nombre de clase

Si tengo una clase llamada MyProgram , ¿hay alguna forma de recuperar ” MyProgram ” como una cadena?

Prueba esto:

 this.GetType().Name 

Quería vomitar esto por si acaso. Creo que se prefiere la forma en que se publica @micahtan.

 typeof(MyProgram).Name 

Aunque la respuesta de micahtan es buena, no funcionará en un método estático. Si desea recuperar el nombre del tipo actual, este debería funcionar en todas partes:

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

Con C # 6.0, puede usar el nameof operador:

 nameof(MyProgram) 

Como referencia, si tiene un tipo que hereda de otro también puede usar

 this.GetType().BaseType.Name 

Si necesita esto en clases derivadas, puede poner ese código en la clase base:

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

Luego, puede alcanzar el nombre en la clase derivada. Devuelve el nombre de clase derivado. Por supuesto, al usar la nueva palabra clave “nombrede”, no habrá necesidad como esta variedad actúa.

Además puedes definir esto:

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

Y luego usa esto:

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

Utilizar esta

Digamos que Application Test.exe se está ejecutando y la función es foo () en form1 [básicamente es clase form1 ], luego el código anterior generará la respuesta debajo.

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

Esto volverá.

 s1 = "TEST.form1" 

para el nombre de la función:

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

regresará

 s1 = foo 

Tenga en cuenta si desea usar esto en el uso de excepciones:

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

Obtener el nombre de clase actual de Asp.net

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

this puede ser omitido. Todo lo que necesita para obtener el nombre de clase actual es:

 GetType().Name