C #: как вы получаете базовый класс?

В C # как получить ссылку на базовый класс данного класса?

Например, предположим, у вас есть определенный класс,MyClassи вы хотите получить ссылку наMyClass& APOS; суперкласс.

Я имею в виду что-то вроде этого:

Type  superClass = MyClass.GetBase() ;
// then, do something with superClass

Тем не менее, кажется, что нет подходящегоGetBase метод.

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

если вы хотите проверить, является ли класс подклассом другого, вы можете использоватьis.

if (variable is superclass){ //do stuff }

Docs:https://msdn.microsoft.com/en-us/library/scekt9xw.aspx

 03 апр. 2016 г., 19:42
Wauw. Это синтаксически сахар. если (это ClassA)

obj.base получит ссылку на родительский объект из экземпляра производного объектаobj.

typeof(obj).BaseType получит ссылку на тип родительского объекта из экземпляра производного объектаobj.

 27 янв. 2014 г., 12:28
base а такжеthis доступны только в экземплярах методов.

Это получит базовый тип (если он существует) и создаст его экземпляр:

Type baseType = typeof(MyClass).BaseType;
object o = null;
if(baseType != null) {
    o = Activator.CreateInstance(baseType);
}

В качестве альтернативы, если вы не знаете тип во время компиляции, используйте следующее:

object myObject;
Type baseType = myObject.GetType().BaseType;
object o = null;
if(baseType != null) {
    o = Activator.CreateInstance(baseType);
}

УвидетьType.BaseType а такжеActivator.CreateInstance на MSDN.

Type.BaseType собственность - это то, что вы ищете.

Type  superClass = typeof(MyClass).BaseType;
Решение Вопроса

Используйте Отражение от Типа текущего класса.

 Type superClass = myClass.GetType().BaseType;

Вы можете просто использоватьbase.

Type superClass = typeof(MyClass).BaseType;

Кроме того, если вы не знаете тип вашего текущего объекта, вы можете получить тип, используя GetType, а затем получить BaseType этого типа:

Type baseClass = myObject.GetType().BaseType;

документация

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