@i__egor

Как у экземляра Type получить список интерфейсов только наследников определенного базового интерфейса?

Допустим есть базовый интерфейс IBaseIntarface и несколько несколько интерфейсов наследующих его IMyIntarface1, IMyIntarface2 и тд.
Есть класс реализующий этих наследников (может несколько из них), плюс там может быть еще какие-то быть
//IBaseIntarface base_intarface;
Type type = base_intarface.GetType();
 List<Type> list_types = type.GetInterfaces().ToList();

В этом случаи в list_types попадают все интерфейсы (плюс еще IBaseIntarface почему-то (думаю если у него еще был родитель то он тоже попал бы))
Если я делаю так:
List<Type> list_types = type
                .GetInterfaces()
                .Where(it => it != typeof(IBaseIntarface))
                .ToList();

То в список уже не попадает базовый интерфейс. но там по прежнему все все, которые есть у объекта.
Если написать так:
List<Type> list_types = type
                .GetInterfaces()
                .Where(it => it != typeof(IBaseIntarface) && it is IBaseIntarface)
                .ToList();

То в список ничего не попадет.
Как написать условие чтоб в списке были только дочерние интерфейсы от определенного базового ?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
MANAB
@MANAB
Разрабатываю на C#: Web, Desktop, Gamedev
https://stackoverflow.com/questions/26733/getting-...
Подход в том, что нужно пройтись по всем типам в сборке и проверить, не реализуют ли они данный интерфейс.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы