在接口中声明事件

最近在给 ** 系列做升级,其中遇到需要在接口中声明事件的情形,半天记不起来怎么写了,于是上 Microsoft Docs 找了一下,官方给出的示例如下:

namespace ImplementInterfaceEvents
{
public interface IDrawingObject
{
event EventHandler ShapeChanged;
}

public class MyEventArgs : EventArgs
{
// class members
}

public class Shape : IDrawingObject
{
public event EventHandler ShapeChanged;
void ChangeShape()
{
// Do something here before the event

OnShapeChanged(new MyEventArgs(/*arguments*/));

// or do something here after the event.
}
protected virtual void OnShapeChanged(MyEventArgs e)
{
ShapeChanged?.Invoke(this, e);
}
}
}

说到这里,我记得以前我是写过的,而且还很熟悉,至少在上家公司还写过,结果自从到了现公司就……有些可悲了。

Tags: 事件 接口