namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Me eventSource = new Me("Learning Hard");
Friend1 obj1 = new Friend1();
Friend2 obj2 = new Friend2();
eventSource.BirthDayEvent += new BirthDayEventHandle(obj1.SendGift);
eventSource.BirthDayEvent += new BirthDayEventHandle(obj2.Buycake);
eventSource.TimeUp();
Console.Read();
}
}
public class BirthdayEventArgs : EventArgs
{
private readonly string name;
public string Name
{
get { return name; }
}
public BirthdayEventArgs(string name)
{
this.name = name;
}
}
public delegate void BirthDayEventHandle(object sender, BirthdayEventArgs e);
public class Subject
{
public event BirthDayEventHandle BirthDayEvent;
protected virtual void Notify(BirthdayEventArgs e)
{
BirthDayEventHandle temp = Interlocked.CompareExchange(ref BirthDayEvent, null, null);
if(temp != null)
{
temp(this, e);
}
}
}
public class Me : Subject
{
private string name;
public Me(string name)
{
this.name = name;
}
public void TimeUp()
{
BirthdayEventArgs eventarg = new BirthdayEventArgs(name);
this.Notify(eventarg);
}
}
// 好友对象
public class Friend1
{
public void SendGift(object sender, BirthdayEventArgs e)
{
Console.WriteLine(e.Name + " 生日到了,我要送礼物");
}
}
public class Friend2
{
public void Buycake(object sender, BirthdayEventArgs e)
{
Console.WriteLine(e.Name + " 生日到了,我要准备买蛋糕");
}
}
}