如何让您的事件支持逆变
2012-11-04 18:56 by 老赵, 4525 visits
摘要:在.NET里定义一个事件会需要一个委托类型,一般来说我们会使用.NET里自带的EventHandler类型,但它的定义其实有稍许缺陷。例如,如果您在自己的项目中编写了这样的代码,Resharper这样的工具便会提醒您“TEventArgs可以设为逆变”。让一个委托类型支持逆变只需要加上in关键字,但如果我们还是让C#编译器帮我们生成事件,则会由于Delegate.Combine方法并不支持逆变而导致失败。我们可以构造一个MulticastDelegateManager来解决这个问题,要不您也来试试看?不过请不要仅仅给出“思路”,千万要写下代码来,否则您的思路不说也罢。
阅读全文