代码之家  ›  专栏  ›  技术社区  ›  Jose A

是否可以在聚合(域层)中实现中介,而不需要依赖注入(DDD)?

  •  1
  • Jose A  · 技术社区  · 7 年前

    为了防止重新发明轮子,我想在聚合中使用中介器来发布域事件。(联合国)幸运地(?)中介器作为一个注入到类中的依赖项工作,而不是我可以静态调用的东西。因此,我最终将通过构造函数创建对库的直接依赖。

    我不记得我在哪里读到它(如果我读得对的话),我应该避免在聚合的构造函数中存在非业务依赖性。

    因此,我不应该这样做:

    public class MyAggregate
    {
        private readonly IMediator _mediator;
        public MyAggregate(IMediator mediator)
        {
            _mediator = mediator;
        }
    }
    

    这使我深刻地思考在聚合中使用中介是可能的还是推荐的(或不推荐的)。

    有没有一种静态地使用中介器的方法,或者我应该实现自己的事件调度程序?

    另外,如果我对聚合依赖关系的理解是错误的,请随时纠正我。

    PXS X2: 我搜索过谷歌,所以找不到答案。 https://stackoverflow.com/search?q=mediatr+domain+events How to decouple MediatR from my business layer DDD: Referencing MediatR interface from the domain project

    1 回复  |  直到 7 年前
        1
  •  1
  •   jlvaquero    7 年前

    我应该避免在 聚集体。

    不仅在构造函数中;您的业务层不应该以任何形式依赖于非业务,甚至是静态的。

    我所做的只是将域事件从聚合返回到应用程序层,然后发布域事件。

    请阅读这两篇博文,以了解我的意思:

    Don't publish Domain Events, return them! DDD-Application-Services-Explained

    推荐文章