gpt4 book ai didi

c# - 如何检查事件处理程序是否已注册

转载 作者:行者123 更新时间:2023-11-30 20:08:49 25 4
gpt4 key购买 nike

我有一个类 X,这个类有一个事件:EventX。

我有一个类 B,我将 objectX 的事件 EventX 注册到类 B 的事件处理程序 HandlerB。

X objectX = X.GetStaticObject();
objectX.EventX += HandlerB;

如何检查 objectX 的 EventX 包含事件处理程序 HandlerB。谢谢。

注意: objectX 是一个静态全局事件,可以从任何地方用任何不是对象 B 的对象注册事件。

最佳答案

要具体检查您的 HandlerB 是否已注册,您可以使用 Delegate.GetInvocationList()获取适当信息的方法。

编辑:

在 V4Vendetta 发表评论后,我尝试编译代码但失败了。我稍微改变了它。

为了能够进行该检查,应将方法 Test 添加到 X(我假设它是静态的,否则使用它而不是 X):

public static void Test(Delegate delegateToTest)
{
if (X.EventX != null)
{
foreach (Delegate existingHandler in X.EventX.GetInvocationList())
{
if (existingHandler == delegateToTest)
{
// registered
}
}
}
}

然后从可以访问 HandlerB 的地方进行测试:

X.Test(new EventHandler(HandlerB));

关于c# - 如何检查事件处理程序是否已注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676258/

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