Оператор «is» для типа

Я использую оператор "is", чтобы найти определенный класс:

for(int i=0; i<screens.Count; i++){
  if(screen is ScreenBase){
    //do something...
  }
}

Это отлично работает, особенно когда он находит любой класс, унаследованный от ScreenBase, но не базовые классы от ScreenBase.

Я хотел бы сделать то же самое, когда я знаю только Тип и не хочу создавать экземпляр класса:

Type screenType = GetType(line);
if (screenType is ScreenBase)

Но это сравнение выдает предупреждение, поскольку оно будет сравниваться с классом «Тип».

Единственная альтернатива, которую я знаю, - это сравнение с == typeof, но это будет проверять только точный тип, а не унаследованные. Есть ли способ добиться аналогичного поведения, такого как "is". оператор, но для типа, описанного Type-class?

6
задан michael 18 September 2011 в 19:10
поделиться