Скажем, например, у меня есть класс:
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.Обычный пример из реальной жизни: создание списка автомобилей, а затем сообщение о том, что это не список автомобилей.
Это всего лишь небольшое раздражение, но если кто-то может пролить свет на это, ябыл бы очень признателен.