In the code below:
interface I1 { }
class CI1: I1 { }
List<CI1> listOfCI1 = new List<CI1>();
IEnumerable<I1> enumerableOfI1 = listOfCI1; //this works
IList<I1> listofI1 = listOfCI1; //this does not
I am able to assign my "listOfCI1" to an IEnumerable<I1>
(due to covariance)
But why am I not able to assign it to an IList<I1>
?
For that matter, I cannot even do the following:
List<I1> listOfI12 = listOfCI1;
Shouldn't covariance allow me to assign a derived type to a base type?