在 GetInvocationList() 之后获取合适的 eventHandler



我有

public delegate void AdministrationEventHandler(object sender, AdministrationEventArgs e);
public static event AdministrationEventHandler MainAdministrationEventHandler;

它是我的 wcf 服务中的主事件处理程序。我也有

private void MyEventHandler(object sender, AdministrationEventArgs e)
{
//code
}

我添加新元素

AdministrationEventHandler userToAddEventHandler = new AdministrationEventHandler(MyEventHandler);

然后

MainAdministrationEventHandler += userToAddEventHandler;

在我的Broadcast()方法中,我为每个处理程序调用MyEventHandler。我想根据AdministrationEventArgs e论点打电话给Broadcast()

我试图制作类似MainAdministrationEventHandler列表的东西,并调用Broadcast()以获取此列表的适当元素,但它不起作用。

我正在通过MainAdministrationEventHandler.GetInvocationList()获得所有处理程序

是否可以在

GetInvocationList() e参数后检查它?

或者我如何以其他方式Broadcast()调用给合适的处理程序?

什么是合适的处理程序?因为根据您的代码,您只能将类型为 AdministrationEventHandler 的处理程序分配给该事件。

此外,从GetInvocationList()返回的列表仅包含要调用的处理程序。这次尚未调用它们,您需要调用它们并将e传递给它们。

像这样的事情应该做:

AdministrationEventArgs args = new AdministrationEventArgs();
Delegate[] dels = MainAdministrationEventHandler.GetInvocationList();
if (dels != null)
    foreach (Delegate handler in dels)
        handler.Invoke(this, args);

相关内容

  • 没有找到相关文章

最新更新