如何使聚合根方法只能对域事件访问,而不能对其他任何内容访问

本文关键字:访问 不能 任何内 其他 事件 何使聚 方法 | 更新日期: 2023-09-27 18:32:03

我有两个聚合根...AR1和AR2。AR1 包含对 AR2 实例的引用 (ID) 集合。在其中一个 AR1 方法中,将引发域事件以更新 AR2 实例的集合。域事件在事务完成后使用此处提到的技术引发:http://www.jayway.com/2013/06/20/dont-publish-domain-events-return-them 一切都按预期工作。

我的

问题是:我从域事件调用以更新AR2的方法当前是公共的(不能是内部的),因为域事件正在我的应用程序服务层(与我的业务逻辑层不同的程序集)中执行。我只希望此方法由域事件执行,而没有其他内容。

我将如何做到这一点?

如何使聚合根方法只能对域事件访问,而不能对其他任何内容访问

您可以请求事件对象作为 AR2 方法的参数。这将是一个很好的指标,表明该方法应仅作为引发事件的结果调用。

public void someMethod(SomeOccuredEvent event)

我们可以看到这种方法在有效聚合设计第三部分的实现最终一致性部分使用。