最先开始接触到命令是webfrom的时候,那个时候拖拉控件,然后直接写click事件,可能是先入为主的思想,
再加上对于事件的运用也太少,导致接触到命令模式,CQRS,发布订阅模式的时候对于事件这一块不是理解,
所以加深一下理解,这里我们用控制台模拟一个button按钮
1 public ?class Button 2 ????{ 3 ????????//定义调用事件的委托 4 ????????public delegate void ButtonDelegate( string e); 5 ?6 ????????//按钮单机事件 7 ????????private event ButtonDelegate ButtionClick; 8 ?9 ????????//事件的添加删除10 ????????public event ButtonDelegate Click_Event11 ????????{12 ????????????add { this.ButtionClick += value; }13 ????????????remove { this.ButtionClick -= value; }14 ????????}15 16 ????????//触发事件17 ????????public void RaiseClick(string args)18 ????????{19 ????????????ButtionClick?.Invoke(args);20 ????????}21 ????}
在事件也是类的成员,他和属性不一样,操作事件是通过add和remove
1 ?class Program 2 ????{ 3 ????????static void Main(string[] args) 4 ????????{ 5 ????????????Button b = new Button(); 6 ????????????b.Click_Event += new Button.ButtonDelegate(Button_Click); 7 ????????????b.Click_Event += new Button.ButtonDelegate(Button_Click1); 8 ?9 ????????????b.RaiseClick("Hello");10 11 ????????????Console.ReadLine();12 ????????}13 14 ????????private static void Button_Click(string args)15 ????????{16 ????????????Console.WriteLine(args);17 ????????}18 19 ????????private static void Button_Click1( string args)20 ????????{21 ????????????Console.WriteLine(args);22 ????????}
这里简单的介绍了怎么定义事件,下一步我们做个一简单的发布订阅。
.net 事件一 模仿Button按钮
原文地址:https://www.cnblogs.com/MarkSun3/p/9490930.html