Для получения дополнительной информации, посмотрите в книге «CLR через C #» от Microsoft Press.

ли 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();
   }
}

Ответы на вопрос(3)

Ваш ответ на вопрос