Even with the 4.0 rejection rules, a list-VW is never a list in the IVehicle category, even if VW is an IVehicle. This is not how dispersion works.
However, in 4.0 you can use:
var vehicles = myCars as IEnumerable<IVehicle>; if(vehicles != null) { foreach(var vehicle in vehicles) {...} }
Since IEnumerable<out T> demonstrates covariance.
Marc gravell
source share