在c#中管理父子实现树
发布时间:2020-12-16 01:29:35 所属栏目:百科 来源:网络整理
导读:我正在实现一个树,把它想象成一个文件夹结构,所以我有一个看起来像这样的类: public class Folder{ //Various Props like Name etc. public IListFolder Children{get;} public Folder Parent {get;}} 现在我想要的是能够在树上走来走去,所以给了一个根,我
我正在实现一个树,把它想象成一个文件夹结构,所以我有一个看起来像这样的类:
public class Folder { //Various Props like Name etc. public IList<Folder> Children{get;} public Folder Parent {get;} } 现在我想要的是能够在树上走来走去,所以给了一个根,我可以找到一片叶子,并给出一片叶子,我可以找到根节点.所以每个孩子都需要父母.现在问题是将新节点添加到树的最佳方法是什么.我过去使用过两种解决方案: >将AddChild(Folder)方法添加到处理添加文件夹的Folder,并设置父级.这个问题是我现在必须锁定我的Children集合,所以你不能绕过这个方法. 我很好奇人们通常使用什么模式,然后如果有人对我的具体用例有任何建议.我正在使用nHibernate将我的树持久化到SQL服务器.我宁愿不实现自定义集合,因为它是很多代码,可以让它适用于我的应用程序的一小部分. 解决方法
看完
on MSDN之后你可以试试这个:
List<Folder> children; public ReadOnlyCollection<Folder> Children { get { return this.children.AsReadOnly(); } } 如果您的私有成员必须声明为IList,那么我们可以将其复制到列表中然后返回它.但我真的没有看到使用具体实现作为私有成员的问题.稍后更改实现不会破坏兼容性. IList<Folder> children; public ReadOnlyCollection<Folder> Children { get { return new List<Folder>(this.children).AsReadOnly(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |