Ответ 1
Используйте Reflection из Type текущего класса.
Type superClass = myClass.GetType().BaseType;
В С#, как получить ссылку на базовый класс данного класса?
Например, предположим, что у вас есть определенный класс, MyClass
, и вы хотите получить ссылку на MyClass
'суперкласс.
Я имею в виду что-то вроде этого:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
Однако, похоже, нет подходящего метода GetBase
.
Используйте Reflection из Type текущего класса.
Type superClass = myClass.GetType().BaseType;
Type superClass = typeof(MyClass).BaseType;
Кроме того, если вы не знаете тип вашего текущего объекта, вы можете получить его тип с помощью GetType, а затем получить BaseType этого типа:
Type superClass = myObject.GetType().BaseType;
Это получит базовый тип (если он существует) и создаст его экземпляр:
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;
obj.base предоставит вам ссылку на родительский объект из экземпляра производного объекта obj.
typeof (obj).BaseType предоставит вам ссылку на родительский тип объекта из экземпляра производного объекта obj.
если вы хотите проверить, является ли класс подклассом другого, вы можете использовать .
if (variable is superclass){ //do stuff }
Документы: https://msdn.microsoft.com/en-us/library/scekt9xw.aspx
вы можете просто использовать базу.