In meinem aktuellen Projekt des ArmyGen arbeite ich viel mit ObserveableCollections, da ich viele Abläufe und Änderungen überwachen muss und ggf. andere Objekte davon informiert werden müssen. Eine sehr schicke Sache die Microsoft da mit dem .NET 3.0 eingeführt hat. Jedes mal wird man automatisch benachrichtigt, wenn einer Collection ein Element hinzugefügt, entfernt, bewegt, ersetzt oder sogar die ganze Collection gecleared wird.

Das schöne ist auch, dass in den Eventargs beim hinzufügen und entfernen von Elementen gesagt wird welche Elemente genau behandelt wurden. Einen Haken jedoch gibt es trotzdem. Beim Clear() der Collection wird in den Eventargs keine Angabe darüber gemacht welche Elemente alle verschwunden sind. Wie ich finde eine sehr ärgerliche Sache denn ich nutze oft Clear().

Microsoft wird wohl Gründe für die Entscheidung gehabt haben (vermutlich aus Performance-/Speichergründen), jedoch ist es für mich ein wichtiges Feature auch bei einem Clear() zu erfahren was vorher in der Liste gesteckt hat. Darum habe ich ich meine eigene ObserveableCollection entworfen, bzw. die bestehende modifiziert.

Desweiteren habe ich bei der .NET ObservableCollection eine AddRange() Methode vermisst welche ich ebenfalls in meiner Collection mit eingebaut habe.

Update : Ich habe ganz vergessen eine RemoveRange(IEnumerable) Methode mit einzubauen. Diese habe ich grade noch nachträglich mit eingebaut !

Meine : tww.Util.Collections.ObservableCollection