Laden...

generelles Event an anderes Objekt weiterreichen

Erstellt von darktower vor 10 Jahren Letzter Beitrag vor 10 Jahren 834 Views
D
darktower Themenstarter:in
34 Beiträge seit 2013
vor 10 Jahren
generelles Event an anderes Objekt weiterreichen

Hallo,

Ich bin gerade dabei ein Programm auf Basis von MVC zu schreiben. Soweit funktioniert alles ganz gut. Nur mit der Kommunikation zwischen View und Controller habe ich etwas Probleme bzw. bin ich mir unsicher wie ich das sinnvoll umsetzen soll.

Der Controller wird über eine Schnittstelle angesprochen. Da ich viele verschiedene Views habe, welche nur das ein oder andere Event auslösen, möchte ich dem Controller (über ein Interface) nur ein generelles Event senden.(je nach View behandelt der Controller dann nur bestimmte für das View mögliche Events mittels if.)
z.B.

public IController
{
   void NewEvent(Object sender, EventArgs e);
}

Macht so ein Vorgehen Sinn bzw. kann ich das überhaupt so machen, oder würdet ihr das gänzlich anders lösen?

p.s. Ich tue mir beim Verstehen von Events und Delegates allgemein noch sehr schwern, vielleicht bereitet mir auch das eine Denksperre für logisches denken. X(

R
212 Beiträge seit 2012
vor 10 Jahren

Hallo darktower,

schau dir mal das interface System.ComponentModel.INotifyPropertyChanged an. Vllt hilft die das ja eien wenig.

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo darktower,

wenn ich dich richtig verstehe, dann möchtest du verhindern, dass der Controller für jedes View mehrere Events abonniert, obwohl jedes View nur ein paar davon feuert. Stattdessen willst du nur (bzw. zusätzlich) ein generelles Event definieren.

Ich würde es wohl trotzdem eher so machen, dass die Views spezielle Events definieren und der Controller halt alle abonniert. Dann ist die Behandlung für jedes Event automatisch in einer eigenen Methode und man spart sich das hässliche Aufdröseln per if.

Den Code für das Abonnieren muss man vermutlich sowieso nur einmal schreiben.

Schau mal in [Lösung] Problem mit EventHandler [==> fertige Code-Snippets inkl. Erklärung]. Da wird das mit den Events eigentlich ganz gut erklärt (falls ich das von meinem eigenen Text mal behaupten darf, doch Eigenlob stimmt ja bekanntlich 😃

Falls du "weiterreichen" jedoch wörtlich gemeint hast, schau mal in best practise: Event einer aggregierten Klasse weiterleiten.

herbivore