C #: como você obter uma classe classe base?
-
12-09-2019 - |
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.
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;
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.