Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Как узнать, является ли Type наследником другого Type?

#c_sharp


Предположим есть классы

class Window1 : Window

и

class Window2 : Window1

Если я имею экземпляр класса Window2, то я легко могу определить, что он наследник
Window так

if (theWindow2 is Window) { }


А как быть, если у меня не экземпляр класса, а тип?

Первое, что пришло на ум - TheType.BaseType. Но в этом случае мне придется рекурсивно
получать базовый класс, пока не достигну нужного, либо пока базовый тип не будет равен
null. Может, есть более быстрый способ?
    


Ответы

Ответ 1



Type.IsSubclassOf? typeof(Window2).IsSubclassOf(typeof(Window1))

Ответ 2



Используйте метод IsSubclassOf класса Type Например: Type second = typeof(SecondChild); Type first = typeof(FirstChild); bool flag = second.IsSubclassOf(first);

Комментариев нет:

Отправить комментарий