У меня есть класс издателя и класс подписчика. У класса издателя есть событие, и подписчик хочет выполнить один из своих собственных методов при возникновении этого события.
Вот мой класс издателя с его событием:
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, когда издатель вызывает событие. Но это не работает. Что я здесь делаю неправильно?