J'ai une liste, et je veux fournir un accès en lecture seule à une collection contenant son contenu. Comment puis-je faire ceci?C#: Vue immuable des objets d'une liste?
Quelque chose comme:
public ICollection<Foo> ImmutableViewOfInventory() {
IList<Foo> inventory = new List<Foo>();
inventory.add(new Foo());
return inventory.ImmutableView();
}
De plus, un IEnumerable
immuable serait aussi bien.
MISE À JOUR: Je réalise maintenant qu'une vue immuable de la liste serait réellement meilleure. (Préserver la sémantique de commande de la liste.)
Cela ne me donne pas le comportement de la liste, à droite:
public ReadOnlyCollection<PickUp> InventoryItems()
{
return new ReadOnlyCollection<PickUp>(inventory);
}
Je suis à la recherche dans la documentation, mais ne pas voir immédiatement ReadOnlyList<T>
.
Voulez-vous une vue immuable de la liste, ou une vue immuable d'un ensemble d'éléments immuables de la liste? – adrianbanks