Allgemeines Vorgehen wenn man Klassen mit Events ausstatten will

26/11/2008 - 19:57 von Christoph Herrmann | Report spam
Hi,

ich brauche derzeit eine sortierte Liste (SortedDictionary) und bràuchte
allerdings bei jeder Einfüge- oder Löschaktion ein Event.

Die Klasse SortedDictionary bietet hierfür ja keine Events (oder hab ich
etwas übersehen?), wie stattet man diese nun am Besten mit Events aus:

- Von der Klasse ableiten und alle Methoden überschreiben, die betroffen
sind

- Einen Wrapper schreiben der die benötigten Methoden besitzt und Events
aufruft bevor der Aufruf an das SortedDictionary delegiert wird

Oder gibt es noch andere Möglichkeiten mit Erweiterungsmethoden oder
àhnliches, was C# in der Hinsicht bietet? Ich denke mal es kommt öfters
vor, dass man bei einer Liste, Dictionary oder àhnliches mit Events
benötigt.

Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
 

Lesen sie die antworten

#1 Elmar Boye
27/11/2008 - 09:38 | Warnen spam
Hallo Christoph,

Christoph Herrmann schrieb:
ich brauche derzeit eine sortierte Liste (SortedDictionary) und bràuchte
allerdings bei jeder Einfüge- oder Löschaktion ein Event.

Die Klasse SortedDictionary bietet hierfür ja keine Events (oder hab ich
etwas übersehen?), wie stattet man diese nun am Besten mit Events aus:

- Von der Klasse ableiten und alle Methoden überschreiben, die betroffen
sind



Überschreiben funktioniert nicht, da die Methoden (hier insbesondere
aber nicht nur Add, Remove, Clear) nicht virtuell sind.

Und für eine saubere Implementation muß man berücksichtigen,
das auch via IDictionary<,> zugegriffen werden kann (und wird).
In den Fàllen würden Ereignisse nicht in allen Fàllen greifen.

- Einen Wrapper schreiben der die benötigten Methoden besitzt und Events
aufruft bevor der Aufruf an das SortedDictionary delegiert wird



Deswegen ist der Wrapper die bessere Lösung.
Anlehnen kann man sich dabei an BindingList<> (ComponentModel)
oder ObservableCollection<> (WPF).

Ich denke mal es kommt öfters vor, dass man bei einer Liste,
Dictionary oder àhnliches mit Events benötigt.



Oben habe ich die beiden hàufigeren genannt.
Wobei es sich dabei um IList<> Vertreter handelt.

Da Sortierung eher flüchtig und der Zugriff via IList<>, z. B. für
Bindungen, für mich wichtiger ist, verwende ich eine von Collection<T>
abgeleitete Liste (vergleichbar mit ObservableCollection<>),
wo der Zugriff via Schlüsselüber ein zusàtzliches Dictionary
sichergestellt wird siehe auch KeyedCollection<,>.

Gruß Elmar

Ähnliche fragen