public interface IBar {}
public interface IFoo : IBar {}
typeof(IFoo).BaseType == null
Как я могу получить IBar?
Ответ 1
Type[] types = typeof(IFoo).GetInterfaces();
Изменить: Если вы специально хотите IBar, вы можете сделать:
Type type = typeof(IFoo).GetInterface("IBar");
Ответ 2
Интерфейс не является базовым. Интерфейсы не являются частью дерева наследования.
Чтобы получить доступ к списку интерфейсов, вы можете использовать:
typeof(IFoo).GetInterfaces()
или если вы знаете имя интерфейса:
typeof(IFoo).GetInterface("IBar")
Если вас интересует только то, что тип неявно совместим с другим типом (я подозреваю, это то, что вы ищете), используйте type.IsAssignableFrom(fromType). Это эквивалентно ключевому слову 'is', но с типами времени выполнения.
В дополнение к тому, что написал другие плакаты, вы можете получить первый интерфейс из списка GetInterface() (если список не пуст), чтобы получить прямой родительский элемент IFoo. Это будет точный эквивалент вашей попытки .BaseType.