2011-04-07 64 views
5

我有一个类,它有一大堆继承自它的子类。我如何测试以查看对象是否是该超类的实例,而不是任何派生类的实例?C#:测试一个超类的实例中的类而不是子类

例子:

我有一个汽车类,它有几类继承它,像汽车,摩托车,自行车,汽车等

假设这一点,我怎么测试一下,看看如果车辆对象真的属于车辆类,而不是汽车或自行车? (由于汽车和自行车是在这种情况下,汽车类的实例,也。)

+4

我觉得Vehicle并不是抽象类,这似乎很奇怪。什么是Vehicle实例的一个例子,它不是任何派生类? – 2011-04-07 20:01:09

回答

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

谢谢,那正是我所需要的。 – Lars 2011-04-07 19:42:11

1

您可以使用:

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

使用Object.GetType()确定具体类型的对象。

Vehicle v = GetVehicle(); 

if(v.GetType() == typeof(Vehicle)) 
{ 
} 
相关问题