У меня есть следующий код, который компилируется в .NET Framework версии 4.0 и выше:производный Список в базовый IEnumerable
public abstract class MyBase { }
public class MyDerived : MyBase { }
public abstract class MyBaseCollection<T> : IList<T> where T : MyBase
{
protected readonly IList<T> deriveds = new List<T>();
public void Test()
{
// This line works in .NET versions 4.0 and above, but not in versions below.
IEnumerable<MyBase> bases = deriveds;
}
#region IList members with NotImplementedException
// ...
#endregion
}
public class MyDerivedCollection : MyBaseCollection<MyDerived> { }
Но в .NET Framework 4.0 ниже, я получаю ошибку компиляции на следующей строке:
IEnumerable<MyBase> bases = deriveds;
не может неявно преобразовать тип 'System.Collections.Generic.IList <T>' в 'System.Collections.Generic.IEnumerable. Явное преобразование существует (вы лидируете листинг?)
Вопрос в том, что изменилось (или было введено) в .NET 4.0 относительно этого?
Есть ли документация об этом?