Я понимаю, что если S
является дочерним классом T
, то a List<S>
является not дочерним элементом List<T>
. Хорошо. Но интерфейсы имеют другую парадигму: если Foo
реализует IFoo
, то почему List<Foo>
нет (пример) a List<IFoo>
?
Как не может быть никакого фактического класса IFoo
, означает ли это, что мне всегда приходилось бросать каждый элемент списка при экспонировании List<IFoo>
? Или это просто плохой дизайн, и я должен определить свой собственный класс коллекции ListOfIFoos
, чтобы иметь возможность работать с ними? Мне тоже не кажется разумным...
Каким будет лучший способ разоблачения такого списка, учитывая, что я пытаюсь программировать интерфейсы? В настоящее время я склонен к фактическому хранению моего List<Foo>
внутри .