默认事件添加/删除实现

我想在事件处理程序添加或删除事件时实现一些额外的逻辑。

我知道.net中的默认实现最近发生了变化。

我想让我的实现尽可能接近默认实现。

任何人都可以指出/提供一些显示compliler如何实现事件的东西?

查看这一系列博客文章 。

在C#<4中,它在lock使用了简单的委托操作。

在C#4+中,它通过在循环中调用Interlocked.CompareExchange来使用更高级的无锁算法; 在反编译器中查看它以获取更多细节。

如果您确定您的类永远不会在多个线程上使用,那么您不需要其中任何一个; 你可以简单地使用非同步的委托算法。

不确定它是否正是您正在寻找的,但本文展示了添加删除处理程序的一些.NET内部。 (还显示了如何获取和操作这些处理程序)

http://www.codeproject.com/Articles/308536/How-to-copy-event-handlers-from-one-control-to-ano

如果你想在那里添加一些逻辑,你可能会发现这篇文章很有趣……