Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

Используйте Reflection из Type текущего класса.

 Type superClass = myClass.GetType().BaseType;

Ответ 2

Type superClass = typeof(MyClass).BaseType;

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

Type superClass = myObject.GetType().BaseType;

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

Ответ 3

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

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.

Ответ 4

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

Type  superClass = typeof(MyClass).BaseType;

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

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