如何使Aggregate Root方法只能访问域事件而不能访问其他任何内容。

时间:2014-11-26 01:42:17

标签: c# design-patterns domain-driven-design access-modifiers domain-events

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

我的问题是:我从域事件调用更新AR2的方法当前是公共的(不能是内部的),因为域事件正在我的应用程序服务层执行(不同程序集到我的业务逻辑层) 。我只希望这个方法由域事件执行,而不是别的。

我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

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

public void someMethod(SomeOccuredEvent event)

我们可以在实施最终一致性部分的Effective Aggregate Design Part III中看到这种方法。