是否可以在没有依赖注入 (DDD) 的情况下在聚合(域层)中实现 MediatR?
Is it possible to implement MediatR in the Aggregates (Domain Layer) without dependency injection (DDD)?
为了避免重新发明轮子,我想在聚合中使用 MediatR 来发布域事件。 (Un)幸运的是 (?) MediatR 作为注入到 类 的依赖项工作,而不是我可以静态调用的东西。因此,我最终会通过构造函数创建对库的直接依赖。
我不记得我是在哪里读到的(如果我没看错的话),我应该避免聚合构造函数中的非业务依赖。
因此,我不应该这样做:
public class MyAggregate
{
private readonly IMediator _mediator;
public MyAggregate(IMediator mediator)
{
_mediator = mediator;
}
}
这让我深入思考是否可以或推荐(或不推荐)在聚合中使用 MediatR...
有没有办法让我静态使用 MediatR,或者我应该实现自己的事件调度程序?
P.S:另外,如果我对聚合依赖项的理解有误,请随时纠正我。
P.S x2:
我搜索了 Google 和 SO,但找不到答案。
https://whosebug.com/search?q=mediatr+domain+events
I should avoid non-business dependencies in the constructors of the
Aggregates.
不仅在构造函数中;您的业务层不应以任何形式依赖于非业务;甚至是静态的。
我做的只是return领域事件从聚合到应用层,然后发布领域事件。
请阅读这两个 post 以更好地理解我的意思:
Don't publish Domain Events, return them!
DDD-Application-Services-Explained
为了避免重新发明轮子,我想在聚合中使用 MediatR 来发布域事件。 (Un)幸运的是 (?) MediatR 作为注入到 类 的依赖项工作,而不是我可以静态调用的东西。因此,我最终会通过构造函数创建对库的直接依赖。
我不记得我是在哪里读到的(如果我没看错的话),我应该避免聚合构造函数中的非业务依赖。
因此,我不应该这样做:
public class MyAggregate
{
private readonly IMediator _mediator;
public MyAggregate(IMediator mediator)
{
_mediator = mediator;
}
}
这让我深入思考是否可以或推荐(或不推荐)在聚合中使用 MediatR...
有没有办法让我静态使用 MediatR,或者我应该实现自己的事件调度程序?
P.S:另外,如果我对聚合依赖项的理解有误,请随时纠正我。
P.S x2:
我搜索了 Google 和 SO,但找不到答案。
https://whosebug.com/search?q=mediatr+domain+events
I should avoid non-business dependencies in the constructors of the Aggregates.
不仅在构造函数中;您的业务层不应以任何形式依赖于非业务;甚至是静态的。
我做的只是return领域事件从聚合到应用层,然后发布领域事件。
请阅读这两个 post 以更好地理解我的意思:
Don't publish Domain Events, return them! DDD-Application-Services-Explained