我想用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