Как отфильтровать все варианты универсального типа с помощью OfType <>

Я хочу фильтровать объекты в List , используя их тип, используя OfType <>. Моя проблема в том, что некоторые объекты имеют общий тип интерфейса, но у них нет собственного общего унаследованного интерфейса. Я хочу фильтровать объекты в List по их типу, используя OfType <>. Моя проблема в том, что некоторые объекты имеют общий тип интерфейса, но у них нет общего унаследованного ...

Я хочу фильтровать объекты в List , используя их тип, используя OfType <>. Моя проблема в том, что некоторые объекты имеют общий тип интерфейса, но у них нет собственного общего унаследованного интерфейса. Я хочу фильтровать объекты в List по их типу, используя OfType <>. Моя проблема в том, что некоторые объекты имеют общий тип интерфейса, но у них нет общего унаследованного ...

Я хочу фильтровать объекты в List , используя их тип, используя 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 или в Интернете. Спасибо за помощь!

6
задан Marcel 20 May 2011 в 11:34
поделиться