gpt4 book ai didi

c# - 如何将事件实例的所有处理程序(委托(delegate))添加到同一事件类型的另一个事件实例?

转载 作者:太空狗 更新时间:2023-10-30 00:58:12 27 4
gpt4 key购买 nike

我有两个类 A 和 B。在 A 类中,我有一个事件 EventA

public delegate void FolderStructureChangedHandler();
public event FolderStructureChangedHandler EventA;

在 B 类中,我有一个名为 EventB 的相同事件。在我的应用程序的方法中,我想将注册到 EventA 的所有处理程序添加到事件 EventB

A classA = new classA();
classA.EventA += delegate1();
classA.EventA += delegate2();

B classB = new classB();
classB.EventB += classA.EventA;

这将引发错误“...事件‘EventA’只能出现在 += 或 -= 的左侧...”。我不知道怎么做。

我想出了一种方法来枚举 EventA 中的所有处理程序,但不知道该怎么做。请帮忙。

最佳答案

您可以访问事件的 InvocationList,但只能从类内部访问。

因此您的解决方案可能如下所示:

class A
{
public event FolderStructureChangedHandler EventA;

public void CopyHandlers(B b)
{
var handlers = EventA.GetInvocationList();
foreach (var h in handlers)
{

b.EventB += (EventHandler) h;
}
}
}

但它并不漂亮。

关于c# - 如何将事件实例的所有处理程序(委托(delegate))添加到同一事件类型的另一个事件实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361460/

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