Рассмотрим следующий пример:
class Base {}
class Derived : Base {}
class Test1
{
private List<Derived> m_X;
public IEnumerable<Base> GetEnumerable()
{
return m_X;
}
}
Это компилируется просто отлично, потому что IEnumerable<T>
ковариантно в T
Однако, если я делаю то же самое, но теперь с дженериками:
class Test2<TBase, TDerived> where TDerived : TBase
{
private List<TDerived> m_X;
public IEnumerable<TBase> GetEnumerable()
{
return m_X;
}
}
Я получаю ошибку компилятора
Невозможно преобразовать тип выражения 'System.Collection.Generic.List' для возврата типа 'System.Collection.Generic.IEnumerable'
Что я здесь делаю неправильно?