【发布时间】:2010-04-01 06:26:13
【问题描述】:
我正在尝试使用 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) 是否支持协方差?
【问题讨论】:
-
由于下面的答案,我设法重构了我的 Foo 类型,以便让它实现一个定义协方差的接口。
标签: c# silverlight c#-4.0 covariance