C#:你如何获得一个班级的基础班?

时间:2009-07-09 17:11:40

标签: c# superclass

在C#中,如何获得对给定类的基类的引用?

例如,假设您有某个类MyClass,并且想要获得对MyClass'超类的引用。

我想到这样的事情:

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

但是,似乎没有合适的GetBase方法。

7 个答案:

答案 0 :(得分:47)

使用当前类的类型中的反射。

 Type superClass = myClass.GetType().BaseType;

答案 1 :(得分:21)

Type superClass = typeof(MyClass).BaseType;

此外,如果您不知道当前对象的类型,可以使用GetType获取类型,然后获取该类型的BaseType:

Type baseClass = myObject.GetType().BaseType;

documentation

答案 2 :(得分:5)

这将获得基本类型(如果存在)并创建它的实例:

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);
}

在MSDN上查看Type.BaseTypeActivator.CreateInstance

答案 3 :(得分:2)

Type.BaseType属性是您正在寻找的。

Type  superClass = typeof(MyClass).BaseType;

答案 4 :(得分:2)

obj.base 将从派生对象 obj 的实例中获取对父对象的引用。

typeof(obj).BaseType 将从派生对象的实例 obj 中获取对父对象类型的引用。

答案 5 :(得分:1)

如果你想检查一个类是否是另一个类的子类,你可以使用

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

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

答案 6 :(得分:-1)

您可以使用 base。