对集合的通用引用
本文关键字:引用 集合 | 更新日期: 2023-09-27 18:35:28
我有两个基类:
class BaseCollection<T> where T : BaseCollectionItem
{
}
和
class BaseCollectionItem
{
}
这些是基类,稍后按以下方式进行子类化:
class MyCollection : BaseCollection<MyItem>
{
}
class MyItem : BaseCollectionItem
{
}
我想存储对集合的引用,该集合在BaseCollectionItem
中保存一个项目。我该怎么做?
class BaseCollectionItem
{
private ??? ownerCollection;
}
如果你正在寻找 BananaCollection(BaseCollection
) 总是包含 Bananas,并且希望 Banana 始终在 BananaCollection (BaseCollection) 中,那么你有一个循环泛型类型参数的情况。
可以查看循环泛型类型参数以获取更多信息。
看起来您希望字段类型出现协方差,这无法干净地完成。
您可以尝试使用Eric Lippert在此处描述的奇怪重复通用模式来执行此操作,但要注意问题!
我指的不仅仅是上述文章中描述的问题,还有一些你介绍自己。例如:为什么不希望将Giraffe
存储在BaseCollection<Mammal>
中?