Как отделить MediatR от моего уровня бизнеса - PullRequest
0 голосов
/ 26 мая 2018

Доброе утро.

Я использую доменные события в своем проекте, и я нашел самый простой способ реализовать его, используя MediatR.Но я не хочу, чтобы мой проект напрямую зависел от него, я хочу применить инверсию зависимостей, чтобы скрыть библиотеку.

Текущий код, имеющий зависимость в Mediator, из-за интерфейса INotification

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 голосов
/ 22 июня 2018

Я закончил тем, что создал свой собственный код события домена, используя StructureMap и отражение, чтобы разрешить обработчики событий во время выполнения.Пример кода здесь: https://github.com/Henry-Keys/domain-events-sample

0 голосов
/ 26 мая 2018

Я обычно делаю базовые классы, которые наследуются от интерфейсов / базы MediatR.Затем, если вы меняете библиотеки (маловероятно), вам просто нужно обновить базовые классы, а остальная часть агрегата остается нетронутой.

...