Warum gibt es in .NET Framework keinen ObservableKeyedCollectionTKey, TValue?

8

Das .NET Framework enthält seit Version 3.0 die ObservableCollection & lt; T & gt; , aber warum isn Gibt es eine ObservableKeyedCollection & lt; TKey, TValue & gt;.

Okay, ich könnte meine eigene Sammlung implementieren, indem ich von KeyedCollection & lt; TKey, TValue & gt; und Implementierung der INotifyCollectionChanged Schnittstelle, aber das wäre keine gute Ergänzung zu .NET Framework.

    
Jehof 03.03.2010, 08:41
quelle

3 Antworten

2

Der Grund dafür, dass es keine ObservableKeyedCollection (oder irgendeinen anderen solchen Typ, der nur eine Kombination anderer generischer Typen ist) gibt, ist, weil ObservableCollection ist generisch und das macht die Implementierung einer" ObservableKeyedCollection "so einfach:

%Vor%

Das ist zwar kein Ein-Liner-Programm, aber das meiste ist Standard. Am wichtigsten ist jedoch, dass die ObservableCollection nicht so umgesetzt wird, wie Sie vorgeschlagen haben. stattdessen nutzt es es voll aus.

Der Grund, warum es "keine gute Ergänzung zu .NET Framework" sein sollte, ist, dass, wenn es bereits einen Weg gibt, etwas zu tun, eine andere Möglichkeit, es zu tun, eine schlechte Idee ist. Je weniger Wege es gibt, um eine bestimmte Aufgabe zu erledigen, desto weniger Möglichkeiten gibt es, es schlecht zu machen. 8)

Die Tools werden zur Verfügung gestellt, es geht jetzt nur darum, wie Sie sie verwenden.

Hoffe das hilft!

    
Task 04.03.2010, 17:11
quelle
2

Bitte werfen Sie einen Blick auf die ObservableKeyedCollection-Klassenimplementierung . Es ist ziemlich einfach.

    
Sergey Brunov 04.08.2011 10:59
quelle
1

Ich würde empfehlen, dass Sie sich C5 ansehen. Es ist eine wunderbare generische Sammlung Bibliothek, die beobachtbare Sammlungen als Standard für alle seine Sammlungen bietet, einschließlich Added , Inserted , Removed , RemovedAt , Cleared und Changed . Darüber hinaus sind die C5-Kollektionen alle ideal für die Programmierung. Alle Schnittstellen bieten die volle Funktionalität der zugrunde liegenden Implementierungen, die im Namensraum System.Collections.Generic fehlt. Darüber hinaus gibt es eine ausführliche Dokumentation . Ich ermutige Sie sehr, es zu überprüfen.

    
Marcus Griep 27.08.2010 14:59
quelle