Я пытаюсь разработать приложение Silverlight 4 с использованием C # 4.0.
У меня есть такой случай:
public class Foo<T> : IEnumerable<T>
{
....
}
В другом месте:
public class MyBaseType : MyInterface
{
...
}
И использование там, где у меня проблемы:
Foo<MyBaseType> aBunchOfStuff = new Foo<MyBaseType>();
Foo<MyInterface> moreGeneralStuff = myListOFStuff;
Теперь я считаю, что это было невозможно в C # 3.0, потому что универсальный тип был "инвариантным". Однако я думал, что это возможно в C # 4.0 благодаря новой ковариации для технологии генериков?
Насколько я понимаю, в C # 4.0 многие общие интерфейсы (например, IEnumerable) были модифицированы для поддержки дисперсии. В этом случае мой класс Foo
нуждается в чем-то особенном, чтобы стать ковариантным?
И поддерживается ли ковариация в Silverlight 4 (RC)?