Pregunta sobre la covarianza de C #
En el siguiente código:
interface I1 { }
class CI1: I1 { }
List<CI1> listOfCI1 = new List<CI1>();
IEnumerable<I1> enumerableOfI1 = listOfCI1; //this works
IList<I1> listofI1 = listOfCI1; //this does not
Puedo asignar mi "listOfCI1" a unIEnumerable<I1>
(debido a covarianza)
Pero, ¿por qué no puedo asignarlo a unIList<I1>
? Por lo demás, ni siquiera puedo hacer lo siguiente:
List<I1> listOfI12 = listOfCI1;
¿No debería la covarianza permitirme asignar un tipo derivado a un tipo base?