我正在尝试使用 C# 4.0 开发 Silverlight 4 应用程序。我有一个这样的案例:
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) 是否支持协方差?