Tengo una lista y deseo proporcionar acceso de solo lectura a una colección que contenga sus contenidos. ¿Cómo puedo hacer esto?C#: ¿Vista inmutable de los objetos de una lista?
Algo así como:
public ICollection<Foo> ImmutableViewOfInventory() {
IList<Foo> inventory = new List<Foo>();
inventory.add(new Foo());
return inventory.ImmutableView();
}
Además, un inmutable IEnumerable
también estaría bien.
ACTUALIZACIÓN: Me doy cuenta ahora de que una vista inmutable de la lista sería realmente mejor. (Preservar la semántica lista de pedidos.)
Esto no me dará comportamiento de la lista, a la derecha:
public ReadOnlyCollection<PickUp> InventoryItems()
{
return new ReadOnlyCollection<PickUp>(inventory);
}
Busco en la documentación pero no ver de inmediato ReadOnlyList<T>
.
¿Desea una vista inmutable de la lista o una vista inmutable de un conjunto de elementos inmutables de la lista? – adrianbanks