0

我有两个基类:

class BaseCollection<T> where T : BaseCollectionItem
{

}

class BaseCollectionItem
{

}

这些是基类,稍后按以下方式进行子类化:

class MyCollection : BaseCollection<MyItem>
{

}

class MyItem : BaseCollectionItem
{

}

我想存储对集合的引用,该集合在BaseCollectionItem. 我该怎么做?

class BaseCollectionItem
{
    private ??? ownerCollection;
}
4

2 回答 2

0

如果您正在寻找 BananaCollection(BaseCollection) 始终包含 Bananas 并且您希望 Banana 始终位于 BananaCollection (BaseCollection) 中,那么您有一个循环泛型类型参数的情况。

您可以查看循环泛型类型参数以获取更多信息。

于 2013-10-15T09:58:12.980 回答
0

看起来你想要你的字段类型的协方差,这不能干净地完成。

您可以尝试使用此处 Eric Lippert 描述的 Curiously Recurring Generic Pattern 来完成此操作,但请注意这些问题!

而且我的意思不仅是上述文章中描述的问题,还包括一些你介绍自己的问题。例如:为什么不希望 aGiraffe存储在 a 中BaseCollection<Mammal>

于 2013-10-15T10:10:08.270 回答