首页 > 解决方案 > 从现有的层次结构创建不可变的集合结构

问题描述

我有一个存储分层数据的对象。我已经成功地从一个平面结构创建了我需要的结构,但这需要我使用List<>它不是一成不变的(我想使用IReadOnlyList)。

现在我无法真正理解如何基于这些子列表创建不可变列表。谁能指导我正确的方向?

该类如下所示:

public class ItemOrFolder
{
    public string Id { get; }

    public string Name { get; }

    public List<ItemOrFolder> Children { get; set; }    // Need to create immutable versions of these recursively

    private ItemOrFolder(string id, string name)
    {
        Id = id;
        Name = name;
    }

    public static ItemOrFolder Create(string id, string name)
    {
        return new ItemOrFolder(id, name);
    }
}

如果Childrennull,那么它是一个项目,否则它是一个文件夹,包含零个或多个ItemOrFolder

标签: c#immutabilityreadonly-collection

解决方案


我找不到 Children 属性的设置位置,但您只需要添加.ToImmutableList()到您的列表中

item.Children = yourList.ToImmutableList();

推荐阅读