【发布时间】:2009-01-13 16:29:12
【问题描述】:
我正在实现一棵树,将其视为文件夹结构,因此我有一个如下所示的类:
public class Folder
{
//Various Props like Name etc.
public IList<Folder> Children{get;}
public Folder Parent {get;}
}
现在我想要的是能够在树上上下走动,所以给定一个根我可以找到一个叶子,给定一个叶子我可以找到根节点。所以每个孩子都需要一个父母。现在的问题是向树中添加新节点的最佳方法是什么。我过去使用过两种解决方案:
- 在Folder 中添加AddChild(Folder) 方法来处理添加文件夹,并且可以设置父级。这个问题是我现在必须锁定我的 Children 集合,这样你就不能绕过这个方法。
- 创建我自己的 Children 集合,该集合将被返回给实例的引用,因此它可以处理在添加时设置父级。这个问题我必须实现一个新的集合。
- 使用在添加或删除项目时包含事件的集合。
我很好奇人们通常使用什么模式,然后是否有人对我的特定用例有任何建议。我正在使用 nHibernate 将我的树持久化到 SQL 服务器。我宁愿不实现一个自定义集合,因为它需要很多代码才能使它适用于我的应用程序的一小部分。
【问题讨论】:
-
我正在寻找 nHibernate 和更一般的想法...有一篇很好的帖子,其中包含有人删除的收藏...
标签: c# nhibernate design-patterns tree