Das Herausgeber-Abonnenten-Modell mit Ereignissen in C#
In dieser Lektion benachrichtigst du mit Ereignissen die angemeldeten Objekte, sobald sich der Status einer Bestellung ändert.
Einführung
Mit Ereignissen können sich Objekte von außen für Benachrichtigungen anmelden, auslösen darf das Ereignis aber nur die Klasse, der es gehört. So setzt man das Modell aus Herausgeber und Abonnent in C# sicher um.
Die Klasse Order deklariert das Ereignis StatusChanged vom Typ EventHandler<string>, es überträgt also einen String mit dem neuen Status. In Main meldet sich ein Lambda an, das den Status auf dem Bildschirm ausgibt. Wird Update("Shipped") aufgerufen, löst der Operator ?. das Ereignis nur aus, wenn es Abonnenten gibt, deshalb gibt das Programm Shipped aus.
Ausführbares C#-Beispiel
using System;
class Order
{
public event EventHandler<string>? StatusChanged;
public void Update(string status) => StatusChanged?.Invoke(this, status);
}
class Program
{
static void Main()
{
var order = new Order();
order.StatusChanged += (_, status) => Console.WriteLine(status);
order.Update("Shipped");
}
}
ShippedMit dem Debugger üben
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
Alle Challenges