【发布时间】:2012-08-13 19:35:48
【问题描述】:
我正在尝试构建的确切代码:
public interface IMapContainer<out T> where T : MapRoomBase
{
String GetName();
IEnumerable<T> GetRooms();
}
我收到此错误: 无效方差:类型参数“T”必须在“MapLibrary.IMapContainer.GetRooms()”上始终有效。 'T' 是协变的。
我的印象是这将是有效的,因为 IEnumerable 只返回项目,并且不能添加任何项目。为什么这不安全+有效?
【问题讨论】:
-
对不起,为什么
out T?你需要那个out吗? -
为什么 T 是你的接口的输出参数?你想达到什么目的?从我的角度来看,这看起来很奇怪/错误。
-
@Xtian, Andre, msdn.microsoft.com/en-us/library/dd997386.aspx.
-
@exacerbateexpert 是的。这就是 Julien Lebosquain 可以给出正确答案的方式。
-
@FrédéricHamidi 感谢您提供的信息!
标签: c# silverlight-4.0 covariance