最先开始接触到命令是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_Event 11 { 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 }
这里简单的介绍了怎么定义事件,下一步我们做个一简单的发布订阅。