如何将MediatR与我的业务层分离

时间:2018-05-26 06:27:24

标签: .net-core mediatr

早上好。

我在我的项目中使用域事件,我发现实现它的最简单方法是使用MediatR。 但我不希望我的项目直接依赖它,我想应用依赖性反转来隐藏库。

由于INotification接口

,在Mediator中具有依赖关系的当前代码
public class EmailConfirmedEvent : INotification
{
    public Guid PassengerId { get; }
    public string Email { get; }

    public EmailConfirmedEvent(Guid passengerId, string email)
    {
        Email = email;
        PassengerId = passengerId;
    }
}

但我希望是这样的:

public class EmailConfirmedEvent : IMyProjectDomainEvent
{
    public Guid PassengerId { get; }
    public string Email { get; }

    public EmailConfirmedEvent(Guid passengerId, string email)
    {
        Email = email;
        PassengerId = passengerId;
    }
}

从某种意义上说,我需要从调解器事件/事件处理程序“转换”到我的项目事件/事件处理程序。

最好的方法是什么? 提前谢谢。

2 个答案:

答案 0 :(得分:3)

我最终使用StructureMap和反射创建了域事件自定义代码,以在运行时解析事件处理程序。 此处的代码示例:https://github.com/Henry-Keys/domain-events-sample

答案 1 :(得分:1)

我通常会创建从MediatR接口/ base继承的基类。然后,如果您更改库(不太可能),您只需更新基类,并且工具的其余部分保持不变。