polimorfico - C#: ¿cómo se obtiene una clase base de clase?
polimorfismo c# (7)
En C #, ¿cómo se obtiene una referencia a la clase base de una clase determinada?
Por ejemplo, supongamos que tiene una determinada clase, MyClass
, y desea obtener una referencia a la superclase de MyClass
.
Tengo en mente algo como esto:
Type superClass = MyClass.GetBase() ;
// then, do something with superClass
Sin embargo, parece que no hay un método GetBase
adecuado.
Esto obtendrá el tipo de base (si existe) y creará una instancia de este:
Type baseType = typeof(MyClass).BaseType;
object o = null;
if(baseType != null) {
o = Activator.CreateInstance(baseType);
}
Alternativamente, si no conoce el tipo en tiempo de compilación, use lo siguiente:
object myObject;
Type baseType = myObject.GetType().BaseType;
object o = null;
if(baseType != null) {
o = Activator.CreateInstance(baseType);
}
Consulte documentation y Activator.CreateInstance
en MSDN.
La propiedad documentation es lo que estás buscando.
Type superClass = typeof(MyClass).BaseType;
Use Reflection del tipo de la clase actual.
Type superClass = myClass.GetType().BaseType;
si desea verificar si una clase es una subclase de otra puede usar es .
if (variable is superclass){ //do stuff }
Documentos: https://msdn.microsoft.com/en-us/library/scekt9xw.aspx
solo puedes usar base.
obj.base te dará una referencia al objeto padre de una instancia del objeto obj derivado.
typeof (obj) .BaseType le proporcionará una referencia al tipo del objeto padre a partir de una instancia del objeto obj derivado.
Type superClass = typeof(MyClass).BaseType;
Además, si no conoce el tipo de su objeto actual, puede obtener su tipo usando GetType y luego obtener el BaseType de ese tipo:
Type superClass = myObject.GetType().BaseType;