Допустим есть базовый интерфейс 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();
То в список ничего не попадет.
Как написать условие чтоб в списке были только дочерние интерфейсы от определенного базового ?