Интерфейс не является базовым типом. Интерфейсы не являются частью дерева наследования.
Чтобы получить доступ к списку интерфейсов, вы можете использовать:
typeof(IFoo).GetInterfaces()
или если вы знаете имя интерфейса:
typeof(IFoo).GetInterface("IBar")
Если вас интересует только то, является ли тип неявно совместимым с другим типом (что, я подозреваю, является тем, что вы ищете), используйте type.IsAssignableFrom (fromType). Это эквивалентно ключевому слову «is», но с типами среды выполнения.
Пример:
if(foo is IBar) {
// ...
}
Эквивалентно:
if(typeof(IBar).IsAssignableFrom(foo.GetType())) {
// ...
}
Но в вашем случае вас, вероятно, больше интересует:
if(typeof(IBar).IsAssignableFrom(typeof(IFoo))) {
// ...
}