节点类模型

本文关键字:模型 节点 | 更新日期: 2023-09-27 18:31:51

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

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

我是否可以以某种方式更改 Node 类的属性和方法参数类型以匹配派生类的类型,而无需手动重写或"new"?

class Node
{
  public TypeOfThisInstance Parent { get; }
}
class TreeNode : Node
{
}

TreeNode.Parent现在应该是一个TreeNode而不是一个Node.

节点类模型

使用泛型:

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>
{
}

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