上回让小弟去砍957,小弟没认出957,任务失败了。这次我得把详细的957资料给他。
//这里我用完成的957信息作为传递参数。其实将957的名字作为传递参数也有好处,可以让某个小弟知道全部,某个小弟不知道全部信息,这样就不用担心信息泄漏了。
//传递的方法是继承自EventArgs,可以通过Invoke(传递的参数)触发事件。
public delegate void XXEventHandler(Employer e);//EventHandler是委托的命名规则,我在帮派里叫XX
public class Employer
{
//我想干掉的家伙叫957,身高175cm,是个IT者
public int A = 957;
public int Height = 175;
public string Job = "IT";
public event XXEventHandler XXEvent;
//这次我用完整的信息传递(传递方法给委托对象是委托的精髓)
public void OnEvent(Employer e)
{
if (XXEvent != null)//保险一点,看看二狗是不是收到信号了
{
XXEvent(e);//这里告诉小弟信息的地方,也是事件触发的关键
}
}
//这回我还得控制下时间
public void TimetoKill()
{
for (int i = 0; i < 100; i++)
{
if (i == 99)//时间到了
{
Employer e = new Employer();
OnEvent(e);
}
}
}
}
class Program
{
static void Main(string[] args)
{
Employer boss = new Employer();
//太多小弟,用一个小弟类专门管理
Xiaodi x = new Xiaodi();
//我想叫谁就得让先他待命着。
boss.XXEvent += x.Ergou;
//boss.XXEvent += x.SanDog;//SanDog接收的方式还是只有957的名字,而不是完整信息,因此SanDog无法执行任务。
//时间到了,我的让他们杀957
boss.TimetoKill();
Console.ReadKey();
}
}
class Xiaodi
{
public void Ergou(Employer g)
{
Console.WriteLine("ToDog: kill {0}\nmessage:\nHeight is {1}!\nJob", g.A, g.Height, g.Job);
}
public void SanDog(int A)
{
Console.WriteLine("SanDog: kill {0}!", A);
}
}
总结:信息传递要完整啊(957类作为传递参数),作为老大考虑的就得仔细(事件触发添加条件),还得让小弟专心去做(小弟接收的参数唯一),老大还是有一点难的呀。