Will GetType() return the most derived type when called from the base class?
当从基类调用时,getType()是否返回最派生的类型?
例子:
1 2 3 4 5 6 7 8 9 10 11 12 | public abstract class A { private Type GetInfo() { return System.Attribute.GetCustomAttributes(this.GetType()); } } public class B : A { //Fields here have some custom attributes added to them } |
或者我应该做一个抽象的方法,派生类必须像下面那样实现?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public abstract class A { protected abstract Type GetSubType(); private Type GetInfo() { return System.Attribute.GetCustomAttributes(GetSubType()); } } public class B : A { //Fields here have some custom attributes added to them protected Type GetSubType() { return GetType(); } } |
号
你的
要静态获取某种类型的类型信息,可以使用
不过,您的代码有一个错误:
GetType始终返回实际类型。
其原因在.NET框架和clr中很深,因为jit和clr使用
有关更多信息,请参阅微软出版社的书"clr via c"。