Skip to main content

Core Interfaces

IMediator

The main interface for sending messages.

public interface IMediator
{
// --- Notify overloads ---
Task Notify<TMessage>(TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;
Task Notify<TMessage>(object? key, TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;
Task Notify<TMessage>(IEnumerable<TMessage> messages, CancellationToken cancellationToken = default)
where TMessage : notnull;
Task Notify<TMessage>(object? key, IEnumerable<TMessage> messages, CancellationToken cancellationToken = default)
where TMessage : notnull;

// --- Send overloads ---
Task Send<TMessage>(TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;
Task Send<TMessage>(object? key, TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;
Task Send<TMessage>(IEnumerable<TMessage> messages, CancellationToken cancellationToken = default)
where TMessage : notnull;
Task Send<TMessage>(object? key, IEnumerable<TMessage> messages, CancellationToken cancellationToken = default)
where TMessage : notnull;

// --- Request overloads ---
Task<TResponse> Request<TMessage, TResponse>(TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;
Task<TResponse> Request<TMessage, TResponse>(object? key, TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;

// --- RequestStream overloads ---
IAsyncEnumerable<TResponse> RequestStream<TMessage, TResponse>(TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;
IAsyncEnumerable<TResponse> RequestStream<TMessage, TResponse>(object? key, TMessage message, CancellationToken cancellationToken = default)
where TMessage : notnull;
}

ICommandHandler<TMessage>

Handler for commands.

public interface ICommandHandler<in TMessage> : IHandler<TMessage, Task>
{
Task Handle(TMessage message, CancellationToken cancellationToken = default);
}

IRequestHandler<TMessage, TResponse>

Handler for requests.

public interface IRequestHandler<in TMessage, TResponse> : IHandler<TMessage, Task<TResponse>>
{
Task<TResponse> Handle(TMessage message, CancellationToken cancellationToken = default);
}

INotificationHandler<TMessage>

Handler for notifications.

public interface INotificationHandler<in TMessage> : IHandler<TMessage, Task>
{
Task Handle(TMessage message, CancellationToken cancellationToken = default);
}

IStreamHandler<TMessage, TResponse>

Handler for streams.

public interface IStreamHandler<in TMessage, out TResponse> : IHandler<TMessage, IAsyncEnumerable<TResponse>>
{
IAsyncEnumerable<TResponse> Handle(TMessage message, CancellationToken cancellationToken = default);
}