【发布时间】:2009-08-26 10:35:18
【问题描述】:
我有一个抽象基类
class AbstractClass
{
Col<AbstractClass> parent
public AbstractClass()
{
//do stuff
}
}
我有两个实现
class A : AbstractClass
{
Col<A> parent
public A(Col<A> parent)
:base(parent)
{
this.parent = parent;
}
}
class B : AbstractClass
{
Col<B> parent
public B(Col<B> parent)
:base(parent)
{
this.parent = parent;
}
}
我有一个收藏
class Col<T> : IList<T> where T : AbstractClass
在另一个类中使用Col<A> and Col<B>,我们称这个类为C。
class C
{
List<A> a = new List<A>()
List<B> b = new List<B>()
}
这一切都会奏效,除了我希望类型 A 和 B 了解它们的父集合。我认为在AbstractClass, A, B 中有以下构造函数是可以的,但似乎通用约束仅适用于类而不适用于方法。基本上我想要以下构造函数:
public AbstractClass(Col<T> where T : AbstractClass)
public A(Col<A>)
public B(Col<B>)
A、B 的实例需要知道它们在哪个集合中,但我不能从派生类调用基构造函数,因为它们是不同的类型。
救命!
【问题讨论】:
标签: c# generics collections constructor