【问题标题】:How to get the current class name at runtime? [duplicate]如何在运行时获取当前类名? [复制]
【发布时间】:2012-08-20 09:43:48
【问题描述】:

我正在尝试将当前类名转换为字符串。

例如:

public class Marker : Mark
{
    string currentclass = ???;
}

public abstract class MiniMarker : Mark
{
}

我想从Marker 类中获取字符串,因此我不必将它放在我从中创建的每个抽象类中。

我希望字符串为MiniMarker,或者抽象类的名称。

我试过MethodBase.GetCurrentMethod().DeclaringType,但没用。

【问题讨论】:

  • 您的样本正确吗? Marker和MiniMarker是怎么关联的,Marker是基于Mark的。
  • 您的示例和您对抽象类的引用毫无意义。您的代码属于抽象基类Mark。除非您有多层层次结构,否则从它派生的类是具体的。

标签: c# class reflection abstract


【解决方案1】:
   this.GetType().Name

应该返回一个类名

【讨论】:

  • 这几乎是正确的,它返回的“Base.Tools.MiniMarker”我只需要让它成为“MiniMarker”。
  • @Craig - 这是一个字符串。把任何事情都写到最后.
  • @Craig 真的吗?我刚试过这个,我只得到了类名。 FullName 具有命名空间,ToString() 也是如此。
  • 对不起,我忘了添加 .Name,这是有效的。谢谢。
  • 有没有办法让它在静态方法中工作,没有这个关键字?
【解决方案2】:

应该这样做:

this.GetType().ToString()

【讨论】:

  • 静态方法:MethodBase.GetCurrentMethod().DeclaringType.Name
猜你喜欢
  • 2014-05-11
  • 2016-09-03
  • 2016-12-14
  • 2013-12-30
  • 1970-01-01
  • 2012-03-08
  • 2017-10-01
  • 1970-01-01
  • 2012-04-25
相关资源
最近更新 更多