c# – 当从基类调用时,GetType()返回最派生的类型吗?

当从基类调用时,GetType()返回最导出的类型?

例:

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
}

或者我应该只是一个抽象的方法,派生类将必须实现像下面?

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()将返回实际的实例化类型。在你的情况下,如果你在一个B的实例上调用GetType(),它将返回typeof(B),即使有问题的变量被声明为A的引用。

没有理由为你的GetSubType()方法。

http://stackoverflow.com/questions/5780584/will-gettype-return-the-most-derived-type-when-called-from-the-base-class

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 当从基类调用时,GetType()返回最派生的类型吗?