如果我有一个名为MyProgram的类,是否有一种方法检索“MyProgram”作为字符串?
当前回答
在c# 6.0中,你可以使用操作符的名称:
nameof(MyProgram)
其他回答
这个可以省略。所有你需要得到当前类名的是:
GetType().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();
}
}
使用这个
假设应用程序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 );
}
获取Asp.net的当前类名
string CurrentClass = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString();
在c# 6.0中,你可以使用操作符的名称:
nameof(MyProgram)
推荐文章
- .NET中的Map和Reduce
- 我如何能使一个组合框不可编辑的。net ?
- .NET反射的成本有多高?
- 实体框架回滚并移除不良迁移
- 将流转换为字符串并返回
- 在c#中检查字符串是否只包含数字的最快方法
- IEquatable和重写Object.Equals()之间的区别是什么?
- 创建一个堆栈大小为默认值50倍的线程有什么危险?
- 转换JSON字符串到JSON对象c#
- 显示两个datetime值之间的小时差值
- 如何设置enum为空
- 选择Enum类型的默认值而无需更改值
- 我如何设置在一个组合框中选择的项目,以匹配我的字符串使用c# ?
- String与StringBuilder
- 如何在ASP中使用ILogger进行单元测试。网络核心