如何通过继承类访问静态方法中的类名称

时间:2014-01-22 08:07:16

标签: c# reflection

我认为用一个例子解释是最容易的。

假设我有以下内容:

public class A
{
    public static string DoWork() { return "working" + <here I want the class name>;}
}

public class B : A{}

现在,如果我这样做

A.DoWork();

我希望结果“正常工作&lt;完整类型名称A&gt;”。

如果我这样做

B.DoWork();

我想要同样的东西,但是B的完整类型名称是否可能?

我知道做这样的事情很难看,但是当你使用某些CMS系统并且你想写一些有用的东西时,你必须改变规则。

2 个答案:

答案 0 :(得分:5)

  

我想要同样的东西,但是B的完整类型名称是否可能?

没有。对B.DoWork的调用实际上已编译到IL中,以便直接调用A.DoWork。 IL中没有任何迹象表明您实际上调用了B.DoWork,所以如果不查看原始来源就无法说明。

答案 1 :(得分:1)

您可以使用通用类

public class A<T>
{
    public static string DoWork() { return "working" + typeof(T).ToString(); }
}

public class B : A<B> { }