using System;
public delegate void MyEventHandler<TEventArgs>(Object sender, TEventArgs e) where TEventArgs : EventArgs;
public class MyEventArgs : EventArgs {
public string Message { get; private set; }
public MyEventArgs(string message) {
Message = message;
}
}
public class Foo {
public event MyEventHandler<MyEventArgs> Greetings;
protected virtual void OnGreetings(MyEventArgs e) {
Greetings?.Invoke(this, e);
}
public void Greet(string message) {
OnGreetings(new MyEventArgs(message));
}
}
public class Sample {
public static void Main() {
var foo = new Foo();
foo.Greetings += Greet;
foo.Greet("Hello World!");
}
private static void Greet(Object sender, MyEventArgs e) {
Console.WriteLine(e.Message);
}
}
Comments