gpt4 book ai didi

c# - 是否可以间接订阅事件?

转载 作者:行者123 更新时间:2023-11-30 15:37:42 24 4
gpt4 key购买 nike

目前,我已经实现了这个,我可以直接访问我想订阅的类,但是如果我有一个我不能直接访问的类会怎样?即 X 触发的事件,Y 订阅它。是否可以在不使用静态事件的情况下这样做?就像您有两个窗口,其中一个窗口发生了一件事情,而您希望在第二个窗口上触发某些事情。

例子:

Y (listens for event and DoSomething()) ---.
|----Event
X (triggers event when something changes) -'

当前代码:

public static class MyEvents {
public delegate void FirstEventHandler();
}

public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();

SecondaryWindow secondWindow = new SecondaryWindow();
secondWindow.Show();

secondWindow.secondaryWindowEvent += new MyEvents.FirstEventHandler(callEvent);
}

protected void callEvent() {
MessageBox.Show("This is a MessageBox.");
}
}

最佳答案

因此,我不得不在不久后开发的 WPF UI 中处理这个问题。出于多种原因,将 UI 的不同部分分开是件好事,但在实际应用程序中,它们通常需要相互通信,而传递引用并不是最佳选择。

我使用了 Event Aggregator在我的应用程序中上课。它允许逻辑上分离的组件保持松散耦合,但仍然能够通过事件相互通信。这种方法为您省去与静态事件相关的麻烦(必须在对象超出范围之前取消订阅静态事件,否则该对象将不符合垃圾回收条件)。

关于c# - 是否可以间接订阅事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12287434/

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