c# - 从现有的层次结构创建不可变的集合结构
问题描述
我有一个存储分层数据的对象。我已经成功地从一个平面结构创建了我需要的结构,但这需要我使用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);
}
}
如果Children
是null
,那么它是一个项目,否则它是一个文件夹,包含零个或多个ItemOrFolder
。
解决方案
我找不到 Children 属性的设置位置,但您只需要添加.ToImmutableList()
到您的列表中
item.Children = yourList.ToImmutableList();
推荐阅读
- nix - 如何为 nix-env 安装指定多个包/派生?
- python - 如何在 django 表单中创建(选择图像)字段?
- python - 使用 PythonAnywhere 连接到 GrapheneDB 时出现“连接被拒绝 erno 111”
- css - Css 样式在 Safari 中有效,但在 chrome/safari 中显示不同。Flex 在 Chrome/firefox 中的工作方式不同吗?我错过了什么?
- git - 两个后向合并如何合并?
- python - 替换FigureCanvas中的Figure?
- javascript - 在Highchart的不同位置显示图例和colorAxis
- java - 如何从 Raspberry Pi 或 Java 项目的 Gitlab CI 构建 MSI
- docker - 如何在带有 Web 界面的 Windows 上部署 Docker 本地注册表开源并管理用户权限?
- .net - 如何获取对导致 ElementClickInterceptedException 的元素的引用?