remarks practices method generate example description cref best c# reflection

practices - C#obteniendo su propio nombre de clase



generate documentation c# (9)

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;

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


Con C # 6.0, puedes usar el nameof operador:

nameof(MyProgram)


Obtener el nombre de la clase actual de Asp.net

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


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

this.GetType().BaseType.Name


Prueba esto:

this.GetType().Name


Quería tirar esto en buena medida. Creo que se prefiere la forma en que se publicó @micahtan.

typeof(MyProgram).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, cuando se utiliza la nueva palabra clave "nameof", no habrá necesidad, ya que 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 usar de esta manera:

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á una respuesta inferior.

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;

volverá

s1 = foo

Tenga en cuenta si desea utilizar esto en uso excepcional:

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


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

GetType().Name