#c# #immutability #readonly-collection
#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
.
Ответ №1:
Я не могу найти, где установлено дочернее свойство, но вам просто нужно добавить .ToImmutableList()
в свой список
item.Children = yourList.ToImmutableList();