Pergunta

Em C #, como se obter uma referência para a classe base de uma determinada classe?

Por exemplo, suponha que você tenha uma classe determinada, MyClass, e que pretende obter uma referência para MyClass' superclasse.

Eu tenho em mente algo como isto:

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

No entanto, parece não há nenhum método GetBase adequado.

Foi útil?

Solução

Use Reflexão do tipo da classe atual.

 Type superClass = myClass.GetType().BaseType;

Outras dicas

Type superClass = typeof(MyClass).BaseType;

Além disso, se você não sabe o tipo do seu objeto atual, você pode obter o tipo usando GetType e, em seguida, obter o BaseType desse tipo:

Type baseClass = myObject.GetType().BaseType;

documentação

Isto irá obter o tipo de base (se existir) e criar uma instância dele:

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

Como alternativa, se você não sabe o tipo de uso do tempo de compilação o seguinte:

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

Type.BaseType e Activator.CreateInstance no MSDN.

O Type.BaseType propriedade é o que você está procurando.

Type  superClass = typeof(MyClass).BaseType;

obj.base você irá obter uma referência para o objeto pai de uma instância do objeto derivado obj .

typeof (obj) .BaseType você irá obter uma referência para o tipo do objeto pai de uma instância do objeto derivado obj .

Se você quiser verificar se uma classe é subclasse de outra você pode usar é .

if (variable is superclass){ //do stuff }

Docs: https://msdn.microsoft.com/en-us/ biblioteca / scekt9xw.aspx

você pode simplesmente usar base.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top