Thema: Delphi Multicast Events

Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: Multicast Events

  Alt 23. Feb 2011, 13:39
Was hälst du von der Idee:
Delphi-Quellcode:
// Zwei Listener hinzufügen, können auch beliebig viele sein
EventHandler.Add(Button1.OnClick, MethodA, MethodB);

// Weiteren Listener hinzufügen
EventHandler.Add(Button1.OnClick, MethodC);

// Einen Listener entfernen, können evtl. auch mehrere sein
EventHandler.Remove(Button1.OnClick, MethodA);

// Alle Listener entfernen
EventHandler.Remove(Button1.OnClick);
Eine Instanz des EventHandlers gibt es somit zur gesamten Laufzeit, welche dann die Aufrufe intern "verknüpft". Problem hierbei ist, dass der Compiler nicht prüfen kann, ob die Parameter von OnClick und MethodA übereinstimmen. Wobei ich mir das sehr bequem vorstellen kann, zumal es etwas weniger Schreibarbeit ist

-- EDIT

Mit den Generics kann man auch noch dem Compiler das Meckern beibringen:
Delphi-Quellcode:
procedure EventHandler.Add<T>(const Source: T; const Dest: T);
begin
end;

EventHandler.Add<TNotifyEvent>(Button1.OnClick, MethodA);
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (23. Feb 2011 um 13:42 Uhr)
  Mit Zitat antworten Zitat