【发布时间】:2013-04-02 18:16:07
【问题描述】:
我有以下课程:
public class Item
{
}
public class ItemCollection<TItem> : ICollection<TItem> where TItem : Item, new()
{
}
我有两个派生类:
public class Feature : Item
{
}
public class Features : ItemCollection<Feature>
{
}
我有一个管理器类来管理这些集合:
public class ItemCollectionManager<TCollection> where TCollection : ItemCollection<Item>, new()
{
}
我尝试使用这个类:
public class FeatureManager : ItemCollectionManager<Features>
{
}
但这会导致:
“Features 类型必须可转换为 ItemCollection<Item> 才能在泛型类 ItemCollectionManager<TCollection> 中用作 TCollection”。
如前所述,
Features is-a ItemCollection<Feature>
和
Feature 是一个Item。
我不认为接口是这项任务的理想解决方案,但如果提供理由,我愿意进行更改。
如果有人能就我做错了什么提出建议,将不胜感激。
谢谢。
【问题讨论】: