gpt4 book ai didi

c# - 在 GetInvocationList() 之后获得合适的 eventHandler

转载 作者:行者123 更新时间:2023-11-30 22:32:59 25 4
gpt4 key购买 nike

我有

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);

关于c# - 在 GetInvocationList() 之后获得合适的 eventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com