如果我有一个名为MyProgram的类,是否有一种方法检索“MyProgram”作为字符串?
当前回答
虽然micahtan的答案很好,但它在静态方法中不起作用。如果你想检索当前类型的名称,这个方法应该在任何地方都适用:
string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
其他回答
在c# 6.0中,你可以使用操作符的名称:
nameof(MyProgram)
使用这个
假设应用程序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 );
}
虽然micahtan的答案很好,但它在静态方法中不起作用。如果你想检索当前类型的名称,这个方法应该在任何地方都适用:
string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
我还想把这个吐出来。我认为@micahtan的发帖方式更可取。
typeof(MyProgram).Name
作为参考,如果您有从另一个类型继承的类型,您也可以使用
this.GetType().BaseType.Name