0

我已经制作了一个基类节点,其中包含添加和删除子节点、处理父节点以及搜索祖先、后代等的方法。到目前为止一切都很好。

现在我想创建一个派生类型 TreeNode :受益于所有这些节点功能的节点,但同时限制子节点和父节点具有相同的 TreeNode 类型。就像现在一样,我仍然将 Node 作为子级和父级的类型。

我可以以某种方式更改 Node 类的属性和方法参数类型以匹配派生类的类型,而无需手动覆盖或“新建”吗?

class Node
{
  public TypeOfThisInstance Parent { get; }
}

class TreeNode : Node
{
}

TreeNode.Parent现在应该是 aTreeNode而不是 a Node

4

2 回答 2

1

使用泛型:

public class BaseNode<T> where T : BaseNode<T>
{
  private T _parent;
  public T Parent { get { return _parent;} }
}
public class Node : BaseNode<Node>
{
} 
public class TreeNode : BaseNode<TreeNode>
{
}
于 2012-04-22T13:53:29.923 回答
0

我认为您需要构建复合设计模式。这一切都是关于创建树状结构,其中结构中的叶子可以以与分支相同的方式处理(它们是可以包含多个叶子以及其他分支的子结构)。这里的想法是,为了让生活更轻松,您应该能够以相同的方式处理树结构中的叶子和叶子的组成。

于 2012-04-22T13:54:58.893 回答