C#获取自己的类名

如果我有一个名为MyProgram的类,有没有一种方法检索“ MyProgram ”作为一个string?

尝试这个:

 this.GetType().Name 

我想把这个做好。 我认为@micahtan发布的方式是首选。

 typeof(MyProgram).Name 

虽然micahtan的答案是好的,但它不会以静态的方式工作。 如果你想检索当前types的名称,这个应该在任何地方工作:

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

使用C#6.0,您可以使用nameof运算符:

 nameof(MyProgram) 

作为参考,如果你有一个从另一个inheritance的types,你也可以使用

 this.GetType().BaseType.Name 

如果你在派生类中需要这个,你可以把这个代码放在基类中:

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

然后,您可以在派生类中find该名称。 返回派生类的名称。 当然,在使用新的关键字“nameof”时,不需要像这样的多种行为。

另外你可以定义这个:

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

然后像这样使用:

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

用这个

假设Application Test.exe正在运行,并且函数是form1中的 foo() [基本上它是类form1 ],那么上面的代码将生成下面的响应。

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

这将返回。

 s1 = "TEST.form1" 

函数名称:

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

将返回

 s1 = foo 

注意如果你想在exception使用中使用它:

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

this可以省略。 所有你需要得到当前类的名字是:

 GetType().Name 

获取当前Asp.net的类名

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