2011-04-07 12 views
5

Tengo una clase, que tiene un montón de subclases que heredan de ella. ¿Cómo puedo probar para ver si un objeto es una instancia de esa súper clase y no de ninguna de las clases derivadas?C#: probar si una clase en una instancia de una súper clase en lugar de una subclase

Ejemplo:

tengo una clase de vehículo, y tiene varias clases que heredan de ella, como coches, de motos, bicicletas, camiones, etc.

Suponiendo esto, ¿cómo puedo probar para ver si un objeto Vehículo es realmente de la clase Vehículo, y no Vehículo o Bicicleta? (Dado que un coche y una bicicleta son en este caso una instancia de la clase de vehículo, también.)

+4

Me parece extraño que Vehicle no sea una clase abstracta. ¿Qué es un ejemplo de una instancia de Vehículo que no es ninguna de las clases derivadas? –

Respuesta

12
if (theObject.GetType() == typeof(Vehicle)) 
{ 
    // it's really a Vehicle instance 
} 
+0

Gracias, eso era justo lo que necesitaba. – Lars

1

que puede utilizar:

bool isSuper = instance.GetType() == typeof(Vehicle); 
2

Uso Object.GetType() para determinar el tipo concreto de objeto.

Vehicle v = GetVehicle(); 

if(v.GetType() == typeof(Vehicle)) 
{ 
} 
Cuestiones relacionadas