我一直在尝试做一些我希望简单的事情,但转向其他方面。 我有一个基类:
public class EntityBase
{
}
和两个继承它的类:
public class EntityA : EntityBase
{
}
public class EntityB : EntityBase
{
}
我想使用一个包装
的容器类型EntityBase
我希望这个容器公开它包含的EntityBase
实例的确切类型,所以我使用C#泛型。但我无法说服C#编译器定义容器类型列表(现在有一个类型参数):
public class EntityNode<T> where T : EntityBase
{
private T _node;
private List<EntityNode<EntityBase>> _children = new List<EntityNode<EntityBase>>();
public EntityNode(T pNode)
{
_node = pNode;
}
public void AddChild(EntityNode<T> pNode)
{
//_children.Add(pNode); //this is not going to work...
}
public T Root
{
get { return _node; }
set { _node = value; }
}
}
是否可以允许EntityNode
包含一个列表,而该列表又包含EntityNode<EntityA>
,EntityNode<EntityB>
和EntityNode<EntityBase>
个实例?
答案 0 :(得分:0)
如何使用List<EntityNode<T>>
代替List<EntityNode<EntityBase>>
:
private List<EntityNode<T>> _children = new List<EntityNode<T>>();