パブリッシャー クラスとサブスクライバー クラスがあります。パブリッシャー クラスにはイベントがあり、サブスクライバーは、このイベントが発生したときに独自のメソッドの 1 つを実行したいと考えています。
これが、イベントを含む私の発行者クラスです。
public delegate EventHandler<MyEventArgs> MyEventHandler(object sender, MyEventArgs args);
public class MyEventArgs : EventArgs
{
public string Content { set; get; }
}
public class Publisher
{
public event MyEventHandler MyCustomEvent;
public void TriggerEvent()
{
if(MyCustomEvent!=null)
MyCustomEvent(this, new MyEventArgs{ Content = "Geeee! This isn't working!" });
}
}
サブスクライバーは次のとおりです。
class Subscriber
{
static void Main(string[] args)
{
Publisher publisher = new Publisher();
//hook the event to a method
publisher.MyCustomEvent += (s, e) => delegate
{
PrintThis(e.Content);
};
//Do something to trigger the event
publisher.TriggerEvent();
}
static public void PrintThis(string content)
{
Console.Write(content);
}
}
パブリッシャーは、サブスクライバーを認識する必要はありません。パブリッシャーがイベントを呼び出したときに、サブスクライバーが PrintThis 関数を実行できるようにします。しかし、これは機能していません。ここで何が間違っていますか?