2015-06-11 3 views
0

Возможно ли список броска классу, который унаследовал список?Передача родового списка в унаследованный класс

Пример

public class FooCollection : List<Foo> 
{ 
} 

List<Foo> oFooList = new List<Foo>(); 
FooCollection oColl = (FooCollecton)oFooList; 

Я ожидаю, что последняя строка будет работать, но это не так.

PS: Я буду использовать это, чтобы лить результат linq для наследования унаследованной коллекции. Любая помощь оценивается.

FooCollection oColl = (FooCollecton)oDBClass.Where(x=> x.Id == 1).ToList(); 

ответ

2

Нет, вы не можете ниспровергать что-либо в C#. A Dog является Animal, но не каждый Animal является Dog.

Если вы хотите, чтобы иметь возможность отличать List<Foo> до FooCollection, вам нужно будет добавить неявное или явное преобразование из первого в последнем. Или добавьте конструктор с параметром IEnumerable<Foo> и вызовите base(IEnumerable<T> items) с этим параметром.

В любом случае вы не должны наследовать List<T>.

В любом случае попробуйте поискать, см. duplicate.

Смежные вопросы