2009-07-09 21 views
31

En C#, ¿cómo se obtiene una referencia a la clase base de una clase determinada?C#: ¿cómo se obtiene una clase base de clase?

Por ejemplo, supongamos que tiene una cierta clase, MyClass, y desea obtener una referencia a la superclase MyClass '.

que tengo en mente algo como esto:

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

Sin embargo, parece que no existe un método adecuado GetBase.

Respuesta

44

Utilice Reflection from the Type de la clase actual.

Type superClass = myClass.GetType().BaseType; 
20
Type superClass = typeof(MyClass).BaseType; 

Además, si usted no sabe el tipo de su objeto actual, se puede obtener es escribir con GetType y luego obtener el BaseType de ese tipo:

Type superClass = myObject.GetType().BaseType; 

documentation

2

La propiedad Type.BaseType es lo que estás buscando.

Type superClass = typeof(MyClass).BaseType; 
-1

sólo puede utilizar base.

5

Esto hará que el tipo base (si existe) y crear una instancia del mismo:

Type baseType = typeof(MyClass).BaseType; 
object o = null; 
if(baseType != null) { 
    o = Activator.CreateInstance(baseType); 
} 

Alternativamente, si no se conoce el tipo en tiempo de compilación, utilice la siguiente:

object myObject; 
Type baseType = myObject.GetType().BaseType; 
object o = null; 
if(baseType != null) { 
    o = Activator.CreateInstance(baseType); 
} 

Consulte Type.BaseType y Activator.CreateInstance en MSDN.

2

obj.base le conseguirá una referencia al objeto padre de una instancia del objeto derivado obj.

typeof (obj) .BaseType le conseguirá una referencia al tipo de objeto primario de una instancia del objeto derivado obj.

+0

'base' y' this' sólo están disponibles en los métodos de instancia. –

Cuestiones relacionadas