Pozostaje tylko kwestia jak to zrobić żeby metoda Handle w interfejsie ICommandHandler realizowała to co metoda Handle w interfejsie IRequestHandler i żeby obsłużył ją MediatR?
Takie rzeczy jedynie z klasą abstrakcyjną. Bo rozumiem, że chodzi o pozbycie się cancellationToken
z metody Handle(TRequest request, CancellationToken cancellationToken)
? Jeśli nie i chodzi o zmianę nazwy z IRequest
na ICommand
i z IRequestHandler
na ICommandHandler
to wyrzuć całkowicie metodę z interfejsu ICommandHandler
. Choć jak napisał @szydlak nie widzę w tym sensu.
Ostatnio znalazłem tu na forum wątek w którym ktoś właśnie coś takiego robił: Moja implementacja DDD w C#
Ja zastosowałem takie rozwiązanie, żeby opakować TResponse
w Response<TResponse>
na potrzeby obsługi blędów. A klasę Response
wziąłem z tego posta.
public interface ICommandHandler<in TCommand, TData> : IRequestHandler<TCommand, Response<TData>>
where TCommand : ICommand<TData>
where TData : class
{
}
Dzięki temu mogłem użyć:
internal class SomeCommandHandler : ICommandHandler<SomeCommand, SomeViewModel>
{
// ...
}
zamiast:
internal class SomeCommandHandler : IRequestHandler<SomeCommand, Response<SomeViewModel>>
{
// ...
}