2009-07-09 13 views
31

In C#, come si ottiene un riferimento alla classe base di una data classe?C#: come si ottiene una classe base di classe?

Ad esempio, si supponga di disporre di una determinata classe, MyClass, e si desideri ottenere un riferimento alla superclasse MyClass.

che ho in mente qualcosa di simile:

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

Tuttavia, sembra non esiste un metodo adatto GetBase.

risposta

44

Utilizzare Reflection dal Tipo della classe corrente.

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

Inoltre, se non si conosce il tipo di oggetto corrente, è possibile ottenere il suo tipo utilizzando GetType e quindi ottenere il BaseType di quel tipo:

Type superClass = myObject.GetType().BaseType; 

documentation

2

La proprietà Type.BaseType è ciò che stai cercando.

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

si può semplicemente utilizzare base.

5

In questo modo ottenere il tipo di base (se esiste) e creare un'istanza di esso:

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

In alternativa, se non si conosce il tipo al momento della compilazione utilizzare il seguente:

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

Vedere Type.BaseType e Activator.CreateInstance su MSDN.

2

obj.base otterrà un riferimento all'oggetto genitore da un'istanza dell'oggetto derivato obj.

typeof (obj) .BaseType otterrà un riferimento al tipo di oggetto genitore da un'istanza dell'oggetto derivato obj.

+0

'base' e' this' sono disponibili solo in metodi di istanza. –

Problemi correlati