Digamos, por ejemplo, tengo una clase:¿Por qué una función que toma IEnumerable <interface> no acepta IEnumerable <class>?
public class MyFoo : IMyBar
{
...
}
Entonces, me gustaría utilizar el siguiente código:
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);
Pero esto produce el error:
`Argument '1': cannot convert from 'IEnumerable<MyFoo>' to 'IEnumerable<IMyBar>'
¿Por qué es esto? Como MyFoo implementa IMyBar, uno esperaría que un IEnumerable de MyFoo se pudiera tratar como un IEnumerable de IMyBar. Un ejemplo mundano del mundo real es producir una lista de autos y luego decirles que no era una lista de vehículos.
Es solo una pequeña molestia, pero si alguien puede arrojar algo de luz sobre esto, estaría muy agradecido.
La respuesta que está buscando también fue cubierto en esta pregunta: http://stackoverflow.com/questions/2346763/any-simple-way-to- Explicar por qué no puedo-hacer-listanimal-animals-new-arraylistdo/2346857 # 2346857 –
Sí, gracias - Lo vi en la lista 'relacionada' una vez que publiqué la pregunta, pero no apareció mientras Lo estaba escribiendo ... –