Скажем, к примеру, у меня есть класс:Почему функция, которая принимает IEnumerable <interface>, не принимает IEnumerable <class>?
public class MyFoo : IMyBar
{
...
}
Тогда, я хотел бы использовать следующий код:
List<MyFoo> classList = new List<MyFoo>();
classList.Add(new MyFoo(1));
classList.Add(new MyFoo(2));
classList.Add(new MyFoo(3));
List<IMyBar> interfaceList = new List<IMyBar>(classList);
Но это дает ошибку:
`Argument '1': cannot convert from 'IEnumerable<MyFoo>' to 'IEnumerable<IMyBar>'
Почему это? Поскольку MyFoo реализует IMyBar, можно было бы ожидать, что IEnumerable MyFoo можно рассматривать как IEnumerable из IMyBar. Приземный пример в реальном мире, производящий список автомобилей, а затем сказал, что это не список транспортных средств.
Это лишь незначительное раздражение, но если кто-то может пролить свет на это, я был бы очень обязан.
Ответ вы после этого также был покрыт в этом вопросе: http://stackoverflow.com/questions/2346763/any-simple-way-to- объясните-почему-я-не могу сделать-listanimal-animals-new-arraylistdo/2346857 # 2346857 –
Да, спасибо - я видел это в списке «related», как только я разместил вопрос, но он не появился Я писал это ... –