节点类模型
本文关键字:模型 节点 | 更新日期: 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>
{
}
我认为您需要构建复合设计模式。这一切都是关于创建树状结构,其中结构中的叶子可以像分支(可以包含多个叶子以及其他分支的子结构)一样处理。这里的想法是,为了让生活更轻松,您应该能够将树结构中的叶子和叶子成分视为相同。