В C # как вы можете узнать, является ли объект экземпляром определенного класса, но не суперклассом этого класса?
«is» вернет true, даже если объект на самом деле принадлежит суперклассу.
typeof(SpecifiedClass) == obj.GetType()
Вы можете сравнить тип вашего объекта с типом класса, который вы ищете:
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 { }
К сожалению, это невозможно в C #, так как C # не поддерживает множественное наследование. Дайте это дерево наследования:
GrandParent Parent Child
Child всегда будет экземпляром каждого типа над ним в цепочке наследования.
Child
Возможно, вы захотите взглянуть на пару методов в классе Type: Type.IsInstaceOf а также Type.IsSubclassOf
Вы можете перейти в класс, который вы ищете, и получить необходимую информацию.
if(Obj.GetType() == typeof(ClassName))
Это сработало для меня