namespace ObserverPattern
{
public interface ISubject
{
event EventHandler NotifyHandler;
}
public class CstEventArg : EventArgs
{
public string Name { get; set; }
}
public class News : ISubject
{
public event EventHandler NotifyHandler;
public void NotifyChanges(EventArgs e)
{
if (NotifyHandler != null)
{
NotifyHandler(null, e);
}
}
}
public class CommonOne
{
public CommonOne(ISubject subject)
{
subject.NotifyHandler += ShowInConsole;
}
public void ShowInConsole(object sender, EventArgs e)
{
Console.WriteLine("show in console " + (e as CstEventArg).Name);
}
}
public class CommonTwo
{
public CommonTwo(ISubject subject)
{
subject.NotifyHandler += ShowInConsole;
}
public void ShowInConsole(object sender, EventArgs e)
{
Console.WriteLine("show in WPF " + (e as CstEventArg).Name);
}
}
class Program
{
static void Main(string[] args)
{
News news = new News();
CommonOne cp1 = new CommonOne(news);
CommonTwo cp2 = new CommonTwo(news);
news.NotifyChanges(new CstEventArg() { Name = "abc" });
Console.ReadLine();
}
}
}