Ich habe eine Liste, und ich möchte nur Lesezugriff auf eine Sammlung bieten, die ihren Inhalt enthält. Wie kann ich das machen?C#: Unveränderbare Ansicht von Objekten einer Liste?
Etwas wie:
public ICollection<Foo> ImmutableViewOfInventory() {
IList<Foo> inventory = new List<Foo>();
inventory.add(new Foo());
return inventory.ImmutableView();
}
Zusätzlich ein unveränderliches IEnumerable
wäre auch in Ordnung sein.
UPDATE: Ich realisiere jetzt, dass eine unveränderliche Ansicht der Liste tatsächlich besser wäre. (Preserving Liste Ordnungs Semantik.)
Das wird mir nicht Liste Verhalten geben, rechts:
public ReadOnlyCollection<PickUp> InventoryItems()
{
return new ReadOnlyCollection<PickUp>(inventory);
}
Ich bin in der Dokumentation suchen, aber nicht sofort ReadOnlyList<T>
sehen.
Möchten Sie eine unveränderliche Ansicht der Liste oder eine unveränderliche Ansicht einer Reihe von unveränderlichen Elementen aus der Liste? – adrianbanks