C #: как вы получаете базовый класс? - PullRequest
32 голосов
/ 09 июля 2009

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

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

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

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

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

Ответы [ 7 ]

47 голосов
/ 09 июля 2009

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

 Type superClass = myClass.GetType().BaseType;
21 голосов
/ 09 июля 2009
Type superClass = typeof(MyClass).BaseType;

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

Type baseClass = myObject.GetType().BaseType;

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

5 голосов
/ 09 июля 2009

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

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.

2 голосов
/ 09 июля 2009

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

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

2 голосов
/ 09 июля 2009

Свойство Type.BaseType - это то, что вы ищете.

Type  superClass = typeof(MyClass).BaseType;
1 голос
/ 22 сентября 2015

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

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

Документы: https://msdn.microsoft.com/en-us/library/scekt9xw.aspx

0 голосов
/ 09 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...