C#4.0を使用してSilverlight4アプリケーションを開発しようとしています。私はこのようなケースがあります:
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)では共分散がサポートされていますか?