gpt4 book ai didi

C# 事件调用列表过滤

转载 作者:太空狗 更新时间:2023-10-29 23:24:42 25 4
gpt4 key购买 nike

我在 C# 中有一个事件。有五个订阅者。所有订户都是不同的类别。但是在引发事件时,我希望不是所有的订阅者/处理程序都应该被通知来处理这个事件。我应该有一些过滤机制,然后只通知剩余的订阅者。实现这一目标的最佳方法是什么?

最佳答案

如果你想用你现有的 even 来做,那么只需遍历事件的调用列表。

var list = localHandler.GetInvocationList();
foreach (EventHandler<T> item in list)
{
if(((ICanDoThing)item.Target).CanDoThing)
{
item(this, someArgs);
}
}

现在,您可以看到我已将 item.Target 转换为 ICanDoThing 类型,这是我刚刚创建的接口(interface),它公开了一个方法“CanDoThing”。这允许您查询对象是否支持您的特定需求。

您可能会质疑是否应该为此使用事件,但以上内容允许您这样做。

关于C# 事件调用列表过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13231109/

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