Учитывая следующее:IEnumerable <T> преобразования
class Base<T> {/*...*/}
class Der<T>: Base<T> {/*...*/}
interface Sth<T>{
IEnumerable<Base<T>> Foo {get;}
}
// and implementation...
class Impl<T>: Sth<T> {
public IEnumerable<Base<T>> Foo {
get {
return new List<Der<T>>();
}
}
}
Как я могу получить это составить? Ошибка, очевидно, не неявное преобразование найдено из списка < Der < T >> в список < База < T >>. Если я его явно укажу, произойдет InvalidCastException.
Если эта тема интересует вас, вы можете прочитать мою массивную серию на дизайн этой функции в C# 4.0: http://blogs.msdn.com/ericlippert/archive/tags/Covariance+and+ Contravariance/default.aspx –