Du ska använda dina nya kunskaper för att bygga ett mini-system där flera objekt kommunicerar via events och delegates, på ett rent och .NET-standardiserat sätt.
Ett enkelt larmsystem:
Sensor upptäcker rörelseAlarmSystem reagerar på sensornLogger-objekt loggar alla händelserpublic class MotionDetectedEventArgs : EventArgs
{
public DateTime TimeStamp { get; }
public MotionDetectedEventArgs()
{
TimeStamp = DateTime.Now;
}
}
public class MotionSensor
{
public event EventHandler<MotionDetectedEventArgs> MotionDetected;
public void Detect()
{
Console.WriteLine("🔍 Sensor: Rörelse upptäckt!");
MotionDetected?.Invoke(this, new MotionDetectedEventArgs());
}
}
public class AlarmSystem
{
public void OnMotionDetected(object sender, MotionDetectedEventArgs e)
{
Console.WriteLine($"🚨 LARM! Rörelse upptäckt {e.TimeStamp:T}");
}
}
public class Logger
{
public void OnMotionDetected(object sender, MotionDetectedEventArgs e)
{
Console.WriteLine($"📝 Logg: Rörelse registrerad kl {e.TimeStamp:T}");
}
}
class Program
{
static void Main()
{
var sensor = new MotionSensor();
var alarm = new AlarmSystem();
var logger = new Logger();
// Koppla ihop lyssnarna
sensor.MotionDetected += alarm.OnMotionDetected;
sensor.MotionDetected += logger.OnMotionDetected;
// Simulera händelser
sensor.Detect();
Console.ReadKey();
}
}
Vill du bygga vidare på det här kan du:
| Lektion | Fokus |
|---|---|
| 1 | Grunder i delegates – hur man pekar på metoder |
| 2 | Multicast delegates och delegates som parametrar |
| 3 | Vad events är och hur de används |
| 4 | EventHandler och EventArgs – standardmönstret |
| 5 | Ett komplett mini-system med events i praktiken |
Du har nu ett stabilt grepp om hur delegates och events fungerar i C#, både på teknisk och praktisk nivå. Det du lärt dig här är grunden för eventdriven programmering, särskilt i UI-program (t.ex. WPF/WinForms), spelutveckling (Unity/Godot) och backend-tjänster.