如何让您的事件支持逆变

在.NET里“事件”是一种无比常见的成员,我在项目里也经常暴露一些事件供其他地方使用。在.NET里定义一个事件会需要一个委托类型,一般来说我们会使用.NET里自带的System.EventHandler类型,它的签名是: public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e); 但这个定义其实有稍许缺陷。例如,如果您在自己的项目中编写了这样的代码,Resharper这