问题
In C#, how does one obtain a reference to the base class of a given class?
For example, suppose you have a certain class, MyClass, and you want to obtain a reference to MyClass' superclass.
I have in mind something like this:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
However, it appears there is no suitable GetBase method.
回答1:
Use Reflection from the Type of the current class.
Type superClass = myClass.GetType().BaseType;
回答2:
Type superClass = typeof(MyClass).BaseType;
Additionally, if you don't know the type of your current object, you can get the type using GetType and then get the BaseType of that type:
Type baseClass = myObject.GetType().BaseType;
documentation
回答3:
This will get the base type (if it exists) and create an instance of it:
Type baseType = typeof(MyClass).BaseType;
object o = null;
if(baseType != null) {
o = Activator.CreateInstance(baseType);
}
Alternatively, if you don't know the type at compile time use the following:
object myObject;
Type baseType = myObject.GetType().BaseType;
object o = null;
if(baseType != null) {
o = Activator.CreateInstance(baseType);
}
See Type.BaseType and Activator.CreateInstance on MSDN.
回答4:
The Type.BaseType property is what you're looking for.
Type superClass = typeof(MyClass).BaseType;
回答5:
obj.base will get you a reference to the parent object from an instance of the derived object obj.
typeof(obj).BaseType will get you a reference to the parent object's type from an instance of the derived object obj.
回答6:
if you want to check if a class is subclass of another you can use is.
if (variable is superclass){ //do stuff }
Docs: https://msdn.microsoft.com/en-us/library/scekt9xw.aspx
回答7:
you can just use base.
来源:https://stackoverflow.com/questions/1105251/c-sharp-how-do-you-obtain-a-class-base-class