using system;
namespace testform
{
/// <summary>
/// event source
/// </summary>
public class bird
{
public bird()
{
}
public void flying()
{
this.onbirdevent(birdstatus.flying);
}
public void dead()
{
this.onbirdevent(birdstatus.dead);
}
public void sleep()
{
this.onbirdevent(birdstatus.sleeping);
}
private void onbirdevent(birdstatus s)
{
if(this.birdevent!=null)
{
this.birdevent(this,new birdeventargs(s));
}
}
public event birdeventhandler birdevent;
}
public delegate void birdeventhandler(object sender,birdeventargs e);
public class birdeventargs:eventargs
{
private birdstatus _s;
public birdeventargs(birdstatus s)
{
this._s=s;
}
public birdstatus status
{
get
{
return this._s;
}
}
}
public enum birdstatus
{
flying,
sleeping,
dead
}
/// <summary>
/// event target
/// </summary>
public class hunter
{
private bird bird;
public hunter()
{
bird=new bird();
bird.birdevent+=new birdeventhandler(this.onwatch);
}
private void onwatch(object sender,birdeventargs e)
{
switch(e.status)
{
case birdstatus.flying:
this.sleep();
break;
case birdstatus.dead:
this.firebird();
break;
case birdstatus.sleeping:
this.killbird();
break;
}
}
private void killbird()
{
…
}
private void firebird()
{
…
}
private void sleep()
{
…
}
}
}
