Я хочу фильтровать объекты в List<ISeries>
, используя их тип, используя OfType <>. Моя проблема в том, что некоторые объекты имеют общий тип интерфейса, но у них нет общего наследуемого интерфейс свой.
У меня есть следующие определения:
public interface ISeries
public interface ITraceSeries<T> : ISeries
public interface ITimedSeries : ISeries
//and some more...
Мой список содержит все виды ISeries
, но теперь я хочу получить только объекты ITraceSeries
, независимо от их фактически определенного параметра универсального типа, например так:
var filteredList = myList.OfType<ITraceSeries<?>>(); //invalid argument!
Как я могу это сделать?
Неблагоприятным решением было бы ввести тип ITraceSeries
, который наследуется от ISeries
:
public interface ITraceSeries<T> : ITraceSeries
Затем используйте ITraceSeries
в качестве фильтра. Но это не добавляет новой информации, а только усложняет цепочку наследования.
Мне кажется, что это общая проблема, но я не нашел полезной информации в SO или в Интернете. Спасибо за помощь!