我有一个父类Container,它可以包含任何类型的节点Node,其中Node是特定于父类的通用类的子类,如下所示:
public class ContainerBase<NodeType, ObjectType>
where NodeType : NodeBase<ObjectType> where ObjectType : ObjectBase {
}
public abstract class NodeBase<T> where T : ObjectBase {
ContainerBase<NodeBase<T>, T> container;
public NodeBase(ContainerBase<NodeBase<T>, T> owner) {
container = owner;
}
}
我想做的是创建具体的子类,以实现标准对象类型的简化:
public class ContainerNormal : ContainerBase<NodeNormal, ObjectNormal> {
}
public class NodeNormal : NodeBase<ObjectNormal> {
//This doesn't work
public NodeNormal(ContainerNormal owner) : base(owner) { }
}
我有些理解为什么调用基础构造函数不起作用。 它试图将ContainerNormal
转换为ContainerBase<NodeBase<ObjectNormal>, ObjectNormal>
,但实际上这并不起作用。
那么,我缺少哪种设计模式才能使其正常工作? 或者我是否只需在构造函数中输入ContainerBase<NodeBase<ObjectNormal>,ObjectNormal>
,即使它可能不是一个ContainerNormal
对象?