Возможно ли реализовать MediatR в агрегатах (уровень домена) без внедрения зависимостей (DDD)? - PullRequest
0 голосов
/ 18 января 2019

Чтобы не изобретать велосипед заново, я бы хотел использовать MediatR в Агрегатах для публикации событий домена. (Не) К счастью (?) MediatR работает как зависимость, которая вводится в классы, а не как то, что я могу назвать статически. Поэтому я бы в итоге создал прямую зависимость от библиотеки через конструктор.

Я не помню, где я читал это (и если я правильно понял), что я должен избегать некоммерческих зависимостей в конструкторах Агрегатов.

Поэтому я не должен делать что-то вроде этого:

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

Это заставило меня глубоко задуматься о том, возможно ли или рекомендуется (или не рекомендуется) использовать MediatR в агрегатах ...

Есть ли способ использовать MediatR статически или мне следует внедрить собственный диспетчер событий?

П.С .: Кроме того, не стесняйтесь поправлять меня, если я неправильно понимаю зависимости Агрегатов.

P.S x2: Я искал Google и ТАК и не могу найти ответ на это. https://stackoverflow.com/search?q=mediatr+domain+events Как отделить MediatR от моего бизнес-уровня DDD: ссылка на интерфейс MediatR из доменного проекта

1 Ответ

0 голосов
/ 22 января 2019

Мне следует избегать некоммерческих зависимостей в конструкторах Заполнители.

Не только в конструкторах; ваш бизнес-уровень не должен иметь зависимостей от некоммерческих организаций в любой форме; даже статичный.

Я просто возвращаю событие домена из агрегата на уровень приложения, а затем публикую событие домена.

Пожалуйста, прочитайте эти пару постов, чтобы лучше понять, что я имею в виду:

Не публикуйте события домена, возвращайте их! DDD-приложения-услуги-Разъяснения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...