我认为用一个例子解释是最容易的。
假设我有以下内容:
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系统并且你想写一些有用的东西时,你必须改变规则。
答案 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> { }