C#:如何获取类的基类?

45

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

例如,假设你有一个名为MyClass的类,并且你想要获取对MyClass的超类的引用。

我心目中的代码像这样:

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

然而,似乎没有合适的GetBase方法。

7个回答

61

使用当前类的类型进行反射。

 Type superClass = myClass.GetType().BaseType;

23
Type superClass = typeof(MyClass).BaseType;

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

Type baseClass = myObject.GetType().BaseType;

文档


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

1
哇。这是语法糖。如果(这是ClassA) - Kent Kostelac

2

Type.BaseType 属性就是您要找的。

Type  superClass = typeof(MyClass).BaseType;

2

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

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


basethis仅在实例方法中可用。 - ivan_pozdeev

-2

你可以直接使用 base.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接