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