在C#中,如何获得给定类的基类引用?
例如,假设你有一个名为MyClass
的类,并且你想要获取对MyClass
的超类的引用。
我心目中的代码像这样:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
然而,似乎没有合适的GetBase
方法。
在C#中,如何获得给定类的基类引用?
例如,假设你有一个名为MyClass
的类,并且你想要获取对MyClass
的超类的引用。
我心目中的代码像这样:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
然而,似乎没有合适的GetBase
方法。
使用当前类的类型进行反射。
Type superClass = myClass.GetType().BaseType;
Type superClass = typeof(MyClass).BaseType;
此外,如果您不知道当前对象的类型,可以使用GetType获取该类型,然后获取该类型的BaseType:
Type baseClass = 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);
}
请查看MSDN上的Type.BaseType
和Activator.CreateInstance
。
如果您想检查一个类是否是另一个类的子类,可以使用is。
if (variable is superclass){ //do stuff }
obj.base会从派生对象的实例obj中获取对父对象的引用。
typeof(obj).BaseType会从派生对象的实例obj中获取对父对象类型的引用。
base
和this
仅在实例方法中可用。 - ivan_pozdeev你可以直接使用 base.