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     }  
View Code

 

posted @ 2020-04-15 14:26  咖啡不会醉  阅读(284)  评论(0编辑  收藏  举报