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.
Kopiuj
public interface ICommandHandler<in TCommand, TData> : IRequestHandler<TCommand, Response<TData>>
where TCommand : ICommand<TData>
where TData : class
{
}
Dzięki temu mogłem użyć:
Kopiuj
internal class SomeCommandHandler : ICommandHandler<SomeCommand, SomeViewModel>
{
// ...
}
zamiast:
Kopiuj
internal class SomeCommandHandler : IRequestHandler<SomeCommand, Response<SomeViewModel>>
{
// ...
}