Closed jbogard closed 1 year ago
This includes the following API changes to change IRequest to use Task instead of Task<Unit> to make void handlers easier:
IRequest
Task
Task<Unit>
- public interface IRequest : IRequest<Unit> { } + public interface IRequest : IBaseRequest { }
- public interface IRequestHandler<in TRequest> : IRequestHandler<TRequest, Unit> - where TRequest : IRequest<Unit> + public interface IRequestHandler<in TRequest> + where TRequest : IRequest { + Task Handle(TRequest request, CancellationToken cancellationToken); + }
public interface IMediator { + Task Send<TRequest>(TRequest request, CancellationToken cancellationToken = default) + where TRequest : IRequest; }
Handlers that implement IRequestHandler<IRequest> need to change their return types to Task from Task<Unit>:
IRequestHandler<IRequest>
public class VoidRequest : IRequest { } public class VoidRequestHandler : IRequestHandler<VoidRequest> { - public Task<Unit> Handle(VoidRequest request, CancellationToken cancellationToken) + public Task Handle(VoidRequest request, CancellationToken cancellationToken) { - return Unit.Task; + return Task.CompletedTask; } }
Async version:
public class VoidRequest : IRequest { } public class VoidRequestHandler : IRequestHandler<VoidRequest> { - public async Task<Unit> Handle(VoidRequest request, CancellationToken cancellationToken) + public async Task Handle(VoidRequest request, CancellationToken cancellationToken) { await SomeThing(); - return Unit.Value; + return; } }
This includes the following API changes to change
IRequest
to useTask
instead ofTask<Unit>
to make void handlers easier:Handlers that implement
IRequestHandler<IRequest>
need to change their return types toTask
fromTask<Unit>
:Async version: