Я успешно использую MediatR в своем текущем проекте. Идея использования посредника Конвейер для решения сквозных проблем действительно хорош.
Одна вещь, которую я не понимаю (и, возможно, причина в том, что я не знаком с С# ковариантность/контравариантность) — как я могу обрабатывать все входящие запросы в одном обработчике? Я хотел бы выполнить действие до выполнения запроса независимо от его типа:
IRequest
or
IRequest<Foo>
Я понимаю, что Джимми говорит о PreRequestHandler, однако я не смог реализовать один для всех запросов, поскольку они всегда типизированы (я мог бы реализовать IPreRequest для каждого отдельного IRequest, который у меня есть, но это звучит неправильно)... .
Любые идеи, пожалуйста?
IRequest<T>
не наследуется отIRequest
? Если нет, то это было бы довольно глупо. Редактировать: согласно источнику,IRequest : IRequest<Unit>
, гдеUnit
— общий параметрout
. Конечно, вы можете что-то с этим сделать, например, позволив вашемуFoo
наследоваться отUnit
. - person CodeCaster   schedule 20.10.2015