MediatR 9.0 Released
A small release, from the release notes:
This release contains a small, but breaking change. In order to provide a simpler interface, the IMediator
interface is now split into two interfaces, a sender and publisher:
public interface ISender
{
Task<TResponse> Send<TResponse>(IRequest<TResponse> request, CancellationToken cancellationToken = default);
Task<object?> Send(object request, CancellationToken cancellationToken = default);
}
public interface IPublisher
{
Task Publish(object notification, CancellationToken cancellationToken = default);
Task Publish<TNotification>(TNotification notification, CancellationToken cancellationToken = default)
where TNotification : INotification;
}
public interface IMediator : ISender, IPublisher
{
}
The main motivation here is that sending should be a top-level concern of an application, but publishing can happen anywhere. This interface segregation should help catch design errors, where should never send requests from anywhere inside a request handler.
I've also updated the MediatR.Extensions.Microsoft.DependencyInjection package to 9.0 as well. Enjoy!