Как узнать, принадлежит ли объект классу, а не суперклассу? - PullRequest
4 голосов
/ 03 февраля 2009

В C # как вы можете узнать, является ли объект экземпляром определенного класса, но не суперклассом этого класса?

«is» вернет true, даже если объект на самом деле принадлежит суперклассу.

Ответы [ 5 ]

14 голосов
/ 03 февраля 2009
typeof(SpecifiedClass) == obj.GetType()
3 голосов
/ 03 февраля 2009

Вы можете сравнить тип вашего объекта с типом класса, который вы ищете:

class A { }
class B : A { }

A a = new A();
if(a.GetType() == typeof(A)) // returns true
{
}

A b = new B();
if(b.GetType() == typeof(A)) // returns false
{
}
2 голосов
/ 03 февраля 2009

К сожалению, это невозможно в C #, так как C # не поддерживает множественное наследование. Дайте это дерево наследования:

GrandParent
  Parent
   Child

Child всегда будет экземпляром каждого типа над ним в цепочке наследования.

1 голос
/ 03 февраля 2009

Возможно, вы захотите взглянуть на пару методов в классе Type: Type.IsInstaceOf а также Type.IsSubclassOf

Вы можете перейти в класс, который вы ищете, и получить необходимую информацию.

0 голосов
/ 25 апреля 2015
if(Obj.GetType() == typeof(ClassName))

Это сработало для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...