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 oder List .

Mit IEnumerable<T> ist die einfachste Lösung für die Frage - ToList verwendet werden kann, und gibt eine Kopie

.
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top