C# 事件与继承
在窗体编程过程中,常常会封装一个基类,包含未来业务中常用的属性、方法、委托、事件等,但是事件作为一个特殊的委托,只能在声明类中调用,派生类都不可以调用,所以在基类中必须实现一个虚函数,实现事件的调用,然后在派生类中重写该方法,并调用基类的方法。代码如下:
1 public interface IDrawingObject 2 { 3 event EventHandler ShapeChanged; 4 } 5 public class MyEventArgs : EventArgs 6 { 7 // class members 8 } 9 public class Shape : IDrawingObject 10 { 11 public event EventHandler ShapeChanged; 12 void ChangeShape() 13 { 14 // Do something here before the event… 15 16 OnShapeChanged(new MyEventArgs(/*arguments*/)); 17 18 // or do something here after the event. 19 } 20 protected virtual void OnShapeChanged(MyEventArgs e) 21 { 22 ShapeChanged?.Invoke(this, e); 23 } 24 }
我很平凡
没有过人的天分
没有命运的恩宠
世界不公平。
但我知道
有一个倔强的我
不甘平庸
渴望自由
潜能无限
我相信
只要执着和努力
总有一天
让世界的不公平
在我面前低头!