我实现一棵树把它看作一个文件夹结构,所以我有一个类,看起来像:实现在C#中的树管理父子
public class Folder
{
//Various Props like Name etc.
public IList<Folder> Children{get;}
public Folder Parent {get;}
}
现在我想要的是能走路在树的上下,给定一个根,我可以找到一片叶子,并给出一片叶子,我可以找到根节点。所以每个孩子都需要一位家长。现在问题是向树添加新节点的最佳方式是什么。我过去使用过两种解决方案:
- 将AddChild(文件夹)方法添加到处理添加文件夹的文件夹中,并且可以设置父文件夹。这个问题是我现在必须锁定我的Children集合,所以你不能绕过这个方法。
- 创建我自己的Children集合,该集合将被给予对实例的引用,以便它可以处理添加上的父设置。这个问题我必须实现一个新的集合。
- 使用添加或删除项目时具有事件的集合。
我很好奇人们通常使用什么样的模式,然后如果有人对我的具体用例有什么建议。我使用nHibernate将我的树保存到SQL服务器。我宁愿不实施自定义集合,因为它是很多代码才能使它适用于我的应用程序的一小部分。
我在寻找既NHibernate和更普遍的想法...有一个很好的职位有收集某人删除... – JoshBerke 2009-01-13 18:44:12