Answers:
尝试这个:
this.GetType().Name
nameof
运算符。
我想把这个丢掉,以防万一。我认为@micahtan发布的方式是首选。
typeof(MyProgram).Name
nameof(MyProgram)
。
尽管米卡丹的回答是好的,但它不能以静态方法工作。如果要检索当前类型的名称,则该名称应可在任何地方使用:
string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
如果需要在派生类中使用此代码,则可以将该代码放在基类中:
protected string GetThisClassName() { return this.GetType().Name; }
然后,您可以在派生类中找到该名称。返回派生的类名。当然,当使用新的关键字“ 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.Name;
这将返回。
s1 = "TEST.form1"
对于函数名称:
string s1 = System.Reflection.MethodBase.GetCurrentMethod().Name;
将返回
s1 = foo
请注意,如果要在例外情况下使用:
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace );
}
[Nullable(2)]
以便在启用null检查时收到警告。
this
可以省略。您需要获取当前类的名称是:
GetType().Name