You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Der Publisher ist eine Klasse, die ein Delegaten enthält. Der Publisher entscheidet damit darüber, wann Nachrichten versandt werden.
186
+
Der Publisher ist eine Klasse, die eine Delegate-Variable enthält. Der Publisher entscheidet damit darüber, wann Nachrichten versandt werden.
187
187
Auf der anderen Seite finden sich die Subscriber-Methoden, die ausgehend vom aktivierten Delegaten im Publisher zur Ausführung kommen. Ein Subscriber hat keine Kenntnis von anderen Subscribern. Events sind ein Feature aus C# dass dieses Pattern formalisiert.
188
188
189
189
> Merke: Ein Event ist ein Klassenmember, dass die Features des Delegatenkonzepts nutzt, um eine Publisher-Subscribe Interaktion zu realisieren.
@@ -205,7 +205,7 @@ public class Publisher{
205
205
206
206
// Schritt 3
207
207
// Wir implementieren das "Feuern" des Events
208
-
publicmagicMethod(){
208
+
publicvoidmagicMethod(){
209
209
if (oldA!=newA) OnAChangedHandler();
210
210
}
211
211
}
@@ -214,7 +214,7 @@ public class Publisher{
214
214
// Implementieren des Subscribers - in diesem Fall wurde eine separate Klasse
215
215
// gewählt.
216
216
publicclassSubscriber{
217
-
publicstaticvoidm_OnPropertyChanged(){
217
+
publicvoidm_OnPropertyChanged(){
218
218
Console.WriteLine("A was changed!");
219
219
}
220
220
}
@@ -225,6 +225,7 @@ public static void Main(string[] args){
|`GoogleStock.OnPropertyPriceChanged = null;`| Löscht alle Callback-Handler | ja |
380
381
|`GoogleStock.OnPropertyPriceChanged = DelPriceChangedHandler(MailService.stock_OnPropertyChanged);`| Setzt einen einzigen Handler (und löscht alle anderen) | ja |
381
382
|`GoogleStock.OnPropertyPriceChanged.Invoke();`| Auslösen des Events innerhalb eines Subscribers | ja |
382
383
384
+
Das Weglassen des Schlüsselwortes event untergräbt das Prinzip der Kapselung und führt leicht zu unbeabsichtigtem Verhalten wie z. B. doppelte Aufrufe.
385
+
386
+
Das event-Keyword dient als Zugriffsmodifizierer für Delegaten und stellt sicher, dass:
387
+
388
+
- Nur der Publisher das Event auslösen kann,
389
+
390
+
- Externe Objekte keinen direkten Zugriff auf den Delegaten selbst bekommen.
391
+
383
392
Was fehlt Ihnen an der Implementierung?
384
393
385
394
Richtig, die Möglichkeit auf die Daten zurückzugreifen.
0 commit comments