РЕДАКТИРОВАТЬ: обратите внимание, что вышеприведенное решение не будет работать, если базовый тип, который вы ищете, является интерфейсом. Следующее решение будет работать для любого типа наследования, будь то класс или интерфейс.
// Returns true if "type" inherits from "baseType"
public static bool Inherits(Type type, Type baseType) {
return baseType.IsAssignableFrom(type)
}
(полу) Полезная выдержка из статьи MSDN :
true, если [аргумент] и текущий тип представляют один и тот же тип, или если текущий тип находится в иерархии наследования [аргумента], или если текущий тип является интерфейсом, который реализует [аргумент], или if [аргумент] является параметром универсального типа, а текущий тип представляет одно из ограничений [аргумента]. false, если ни одно из этих условий не выполняется или если [аргумент] является пустой ссылкой (ничего в Visual Basic).