у меня
public interface IFoo
{
IEnumerable<IThingy> Thingies{get;}
}
Я хочу тогда быть в состоянии сделать
class Thing1 : IThingy
{
...
}
class ImplementFoo : IFoo
{
List<Thing1> m_things;
IEnumerable<IThingy> Thingies {get {return m_things;}}
}
ImplementFoo.Thingies возвращает IList (который является IEnumerable) Thing1s (которые являются IThings). Так что в теории этот код должен работать, но это не так. VS предлагает бросок в геттере; который компилируется, но не работает во время выполнения. Я ожидаю слишком много ковариации в c # 4?
VS 2010 -> Silverlight 4. Вот ошибка компиляции
Невозможно неявно преобразовать тип 'System.Collections.Generic.List<MyProj.Column>
' в 'System.Collections.Generic.IEnumerable<MyProj.IColumn>
'. Существует явное преобразование (вам не хватает приведения?)
РЕДАКТИРОВАТЬ: Люди говорят мне, что это должно работать, но это не работает в SL4