早上好。
我在我的项目中使用域事件,我发现实现它的最简单方法是使用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;
}
}
从某种意义上说,我需要从调解器事件/事件处理程序“转换”到我的项目事件/事件处理程序。
最好的方法是什么? 提前谢谢。
答案 0 :(得分:3)
我最终使用StructureMap和反射创建了域事件自定义代码,以在运行时解析事件处理程序。 此处的代码示例:https://github.com/Henry-Keys/domain-events-sample
答案 1 :(得分:1)
我通常会创建从MediatR接口/ base继承的基类。然后,如果您更改库(不太可能),您只需更新基类,并且工具的其余部分保持不变。