1

我正在尝试将 Michael Dudley 的示例代码用于我自己的弱事件管理器实现:

使用 .NET 的 WeakEventManager 实现弱事件的示例

我想知道我将把我自己的处理程序的用户代码放在哪里?我看到这个:

private EventHandler mHandler = (s, e) =>
{
    CurrentManager.DeliverEvent(s, e);
    return;
};

我会用我自己的自定义代码替换那个表达式的内容吗?

谢谢,

凯文

4

1 回答 1

0

在大多数情况下,处理程序应该保持原样。正如对该答案的评论所述,处理程序声明甚至不是必需的。以下代码StartListening应该足够了:

((PropertyValue)source).Changed += DeliverEvent;

如果您需要修改s和/或e在传递事件之前的值,您可以将该代码添加到您发布的处理程序中。但无论如何,都DeliverEvent必须调用。它循环并调用ReceiveWeakEvent所有已注册的侦听器,除非您将它们存储在自己的ListenerList. 因此,基本上,如果您修改事件处理程序,它仍然必须调用DeliverEvent,否则您的弱事件侦听器将永远不会收到事件通知。

如果您发布了您想要找到位置的代码,那么可能会更容易帮助您弄清楚您正在尝试完成什么以及应该去哪里。

于 2012-08-06T17:22:58.490 回答