使用事件聚合器时如何显式表达依赖关系?

How to express dependencies explicitly when using Event Aggregator?

这是我第一次使用事件聚合器,如果我忽略或误解了一些非常明显的事情,我们深表歉意。

我担心的是实施 EventAggregator 解决方案似乎隐藏了各种 类 之间的依赖关系,因为它们的显式依赖关系将是 EventAggregator.

因此,我的组合根目录中的以下内容(显然只是示例代码):

_dependency = new Dependency();
_dependent1 = Dependent1(_dependency);
_dependent2 = Dependent2(_dependency);
...

如果我猜对了会变成下面这样:

_eventAggregator = new EventAggregator();
_dependency = new Dependency(_eventAggregator); // Publishes
_dependent1 = Dependent1(_eventAggregator); // Handles
_dependent2 = Dependent2(_eventAggregator); // Handles
...

备注:

My concern is that implementing the EventAggregator solution seems to hide the dependencies between various classes, since their explicit dependency will be the EventAggregator.

嗯,这就是使用事件聚合器的目的。所有 classes 只知道事件聚合器本身,但他们什么都不知道,也不知道彼此之间有任何依赖关系。这意味着您可以修改一个 class 而不会影响另一个。

当然,它们确实依赖于事件聚合器,但这比保持每个发布者对每个订阅者的直接引用要好class。

显然,如果订阅者以某种方式依赖于此事件,则发布者需要在某个时候发布该事件。但即使您从订阅者那里强烈引用了发布者 class,这也是一样的。