【发布时间】:2010-10-29 07:05:14
【问题描述】:
假设我有一个类,它实现了一个通用接口 公共接口 IItem {}
public interface IStuff<out TItem> where TItem : IItem
{
TItem FavoriteItem { get; }
}
public class MyStuff<TItem> : IStuff<TItem> where TItem : IItem
{
public TItem FavoriteItem
{
get { throw new NotImplementedException(); }
}
}
我还有一个非通用接口
public interface IFavoriteItem
{
IItem FavoriteItem { get; }
}
我想让 MyStuff 类实现这个 IFavoriteItem 接口。由于 TItem 实现了 IItem 在我看来,public TItem FavoriteItem 属性已经实现了 IFavoriteItem。
但编译器不这么认为,它要我在 MyClass 中声明一个单独的IItem IFavoriteItem.FavoriteItem。为什么会这样? c# covariance 不是应该在这里发挥作用并解决我的问题吗?
谢谢
【问题讨论】: