Read-only-Liste oder unveränderbare Liste in .NET 4.0
-
13-09-2019 - |
Frage
Von dem, was ich sagen kann, fehlt .NET 4.0 noch schreibgeschützt Listen. Warum fehlt der Rahmen noch diese Funktionalität? Ist das nicht eine der häufigsten Stücke von Funktionalität für Domain-Driven Design ?
Einer der wenigen Vorteile Java über C # hat, ist dies in Form der Collections.unmodifiablelist (Liste) Methode, die es in IList längst überfällig scheint
Mit IEnumerable<T>
ist die einfachste Lösung für die Frage - ToList
verwendet werden kann, und gibt eine Kopie
Lösung
Sie suchen ReadOnlyCollection
, die es schon seit .NET2.
IList<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);
oder
List<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = foo.AsReadOnly();
Dies erzeugt eine schreibgeschützte Ansicht , die auf die eingewickelt Sammlung Änderungen widerspiegeln.
Andere Tipps
Wie über die Readonlycollection bereits im Rahmen?
Für diejenigen, die Schnittstellen zu verwenden:
.NET 4.5 fügt die generischen IReadOnlyList
-Schnittstelle, die durch List<T>
beispielsweise implementiert ist.
Es ist ähnlich wie IReadOnlyCollection
und fügt eine Item
Indexer Eigenschaft.
Wenn die häufigste Muster der Liste ist durch alle Elemente, IEnumerable<T>
oder IQueryable<T>
iterieren kann effektiv als eine schreibgeschützte Liste handeln auch.
In 2.0 können Sie AsReadOnly
rufen eine schreibgeschützte Version der Liste zu bekommen. Oder wickelt eine bestehende IList
in einem ReadOnlyCollection<T>
Objekt.
Was ist los mit System.Collections.ObjectModel.ReadOnlyCollection / p>