我经常想知道它,但现在我遇到了一个包含它的逻辑,我想我应该继续在破译基本面方面获得一些帮助。问题如下,我正在查看一个使用复合应用程序库的 WPF 应用程序。在应用程序的源代码中,我在视图的演示文稿中遇到了以下代码行。为了方便起见,我将其称为演示文稿 A:
private void OnSomethingChanged(SomeArgumentType arguement)
{
UnityImplementation.EventAggregator.GetEvent<EventA>().Publish(null);
}
当我在上面给定的方法中看到 Publish 方法时,我的直觉告诉我在某个地方和另一个类中必须有一个订阅,我将它称为 Presentation B 有以下内容:
UnityImplementation.EventAggregator.GetEvent(Of EventA).Subscribe(AddressOf OnSomeEventA)
在同一个类中有一个名为 OnSomeEventA 的私有函数,其中包含一些逻辑。
我的问题是这里的一切是如何连接的?这里的“发布”“订阅”到底实现了什么?当“某事”发生变化时,编译器如何知道它必须遵循 OnSomethingChanged 中的逻辑,该逻辑将“发布”一个由另一个类“订阅”的事件,其中描述了事件处理程序的逻辑?了解这个过程的基本布线会很棒。
谢谢