C #: проверить, является ли класс в экземпляре суперкласса вместо подкласса - PullRequest
5 голосов
/ 07 апреля 2011

У меня есть класс, который имеет несколько подклассов, которые наследуются от него.Как я могу проверить, является ли объект экземпляром этого суперкласса, а не какого-либо из производных классов?

Пример:

У меня есть класс Vehicle, и у него несколькоклассы, которые унаследованы от него, такие как Автомобиль, Мотоцикл, Велосипед, Грузовик и т. д.

Если предположить, как мне проверить, действительно ли объект Vehicle принадлежит к классу Vehicle, а не Car или Bicycle?(Так как автомобиль и велосипед в данном случае также являются экземплярами класса Vehicle.)

Ответы [ 3 ]

13 голосов
/ 07 апреля 2011
if (theObject.GetType() == typeof(Vehicle))
{
   // it's really a Vehicle instance
}
2 голосов
/ 07 апреля 2011

Используйте Object.GetType(), чтобы определить конкретный тип объекта.

Vehicle v = GetVehicle();

if(v.GetType() == typeof(Vehicle))
{
}
1 голос
/ 07 апреля 2011

Вы можете использовать:

bool isSuper = instance.GetType() == typeof(Vehicle);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...