En C #, comment obtenir une référence à la classe de base d'une classe donnée?
Par exemple, supposons que vous ayez une certaine classe, MyClass
, et que vous souhaitiez obtenir une référence à la superclasse MyClass
'.
Je pense à quelque chose comme ça:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
Cependant, il semble qu'il n'y ait pas de méthode GetBase
appropriée.
Utilisez la réflexion du type de la classe actuelle.
Type superClass = myClass.GetType().BaseType;
Type superClass = typeof(MyClass).BaseType;
En outre, si vous ne connaissez pas le type de votre objet actuel, vous pouvez obtenir le type à l'aide de GetType, puis obtenir le BaseType de ce type:
Type baseClass = myObject.GetType().BaseType;
Cela obtiendra le type de base (s'il existe) et en créera une instance:
Type baseType = typeof(MyClass).BaseType;
object o = null;
if(baseType != null) {
o = Activator.CreateInstance(baseType);
}
Sinon, si vous ne connaissez pas le type au moment de la compilation, utilisez ce qui suit:
object myObject;
Type baseType = myObject.GetType().BaseType;
object o = null;
if(baseType != null) {
o = Activator.CreateInstance(baseType);
}
Voir Type.BaseType
et Activator.CreateInstance
sur MSDN.
La propriété Type.BaseType est ce que vous recherchez.
Type superClass = typeof(MyClass).BaseType;
obj.base vous obtiendrez une référence à l'objet parent à partir d'une instance de l'objet dérivé obj .
typeof (obj) .BaseType vous donnera une référence au type de l'objet parent à partir d'une instance de l'objet dérivé obj .
si vous voulez vérifier si une classe est une sous-classe d'une autre, vous pouvez utiliser est .
if (variable is superclass){ //do stuff }
Documents: https://msdn.Microsoft.com/en-us/library/scekt9xw.aspx