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();