我想用C#4.0开发Silverlight 4应用程序。 我有这样一个案例:C#4.0 RC,Silverlight 4.0 RC协方差
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)中支持协变?
由于下面我manged重构我的Foo类型不同,以拥有它实现一个接口,在其上定义的协方差的答案。 – 2010-04-02 22:06:55