//C# delegate ro event 规范写法 //.NET Framewrok事件设计准则 //1>.事件命名准则应使用PascalCasing命名方式 //2>.声明delegate时,使用void类型当作返回值 delegate void PubComputerEventHandler();//没有带参数的delegate类型 // .NET FrameWrok 事件接受参数一律命名为 (sender , e) delegate void PubLifeEventHandler( object sender , PubEventArgs e);//带参数的delegate类型. //定义事件提供数据类,对类以EventNameArges进行命名,从System.EventArgs派生该类,然后添加事件成员。 //如: public delegate void EventNameHalder(object sender , EventNameEventArgs e); ///.NET FrameWrok事件设计准则 /// 在引发事件的类中提供一个受保护的方法。以OnEventName进行命名。在该方法中引发事件。 Protected vritual void OnEventName(EventAges e) { if(EventName != null) { EventName(this,e); } } //下面写一个完整的Demo namespace Demospace { public class DemoClass { /// defautl Constructor public DemoClass(){} delegate void PubComputerEventHandler(object sender , PubEventArgs e); //声明delagate event PubComputerEventHandler ComputerEventArgs; //声明event protected vritual void OnComputer(PubEventArgs e) { PubComputerEventHandler handler = ComputerEventArgs;//防止线程同步问题 if(handler != null) { handler(this,e); } } /// 自定义基类 public class PubEventArges : System.EventArgs { private readonly string name public PubEventArgs(string Name) { this.name=Name; } } } // End class } //End namespace