Table of Contents

Class Mediator

Namespace
Caesar
Assembly
Caesar.dll

Default IMediator implementation. Resolves handlers and behaviors from an IServiceProvider at call time, so it can be registered with any lifetime. Handler wrappers are stateless and cached per request type for the lifetime of the process.

public class Mediator : IMediator, ISender, IPublisher
Inheritance
Mediator
Implements
Inherited Members

Constructors

Mediator(IServiceProvider)

Creates a mediator that publishes notifications sequentially (ForeachAwaitPublisher).

public Mediator(IServiceProvider serviceProvider)

Parameters

serviceProvider IServiceProvider

Provider used to resolve handlers and behaviors.

Mediator(IServiceProvider, INotificationPublisher)

Creates a mediator with a custom notification publishing strategy.

public Mediator(IServiceProvider serviceProvider, INotificationPublisher publisher)

Parameters

serviceProvider IServiceProvider

Provider used to resolve handlers and behaviors.

publisher INotificationPublisher

Strategy used to invoke notification handlers.

Methods

CreateStream(object, CancellationToken)

Creates a stream for a streaming request whose type is only known at runtime. The object must implement IStreamRequest<TResponse>.

public IAsyncEnumerable<object?> CreateStream(object request, CancellationToken cancellationToken = default)

Parameters

request object

The request.

cancellationToken CancellationToken

Cancellation token.

Returns

IAsyncEnumerable<object>

CreateStream<TResponse>(IStreamRequest<TResponse>, CancellationToken)

Creates a stream for a streaming request, running the stream pipeline.

public IAsyncEnumerable<TResponse> CreateStream<TResponse>(IStreamRequest<TResponse> request, CancellationToken cancellationToken = default)

Parameters

request IStreamRequest<TResponse>

The request.

cancellationToken CancellationToken

Cancellation token.

Returns

IAsyncEnumerable<TResponse>

Type Parameters

TResponse

The item type.

Publish(object, CancellationToken)

Publishes a notification whose type is only known at runtime. The object must implement INotification.

public Task Publish(object notification, CancellationToken cancellationToken = default)

Parameters

notification object

The notification.

cancellationToken CancellationToken

Cancellation token.

Returns

Task

PublishCore(IEnumerable<NotificationHandlerExecutor>, INotification, CancellationToken)

Publishes a notification through the configured INotificationPublisher. Override to intercept every publish (for example to add logging or tracing).

protected virtual Task PublishCore(IEnumerable<NotificationHandlerExecutor> handlerExecutors, INotification notification, CancellationToken cancellationToken)

Parameters

handlerExecutors IEnumerable<NotificationHandlerExecutor>

The resolved handler executors.

notification INotification

The notification.

cancellationToken CancellationToken

Cancellation token.

Returns

Task

Publish<TNotification>(TNotification, CancellationToken)

Publishes a notification to all of its handlers using the configured INotificationPublisher.

public Task Publish<TNotification>(TNotification notification, CancellationToken cancellationToken = default) where TNotification : INotification

Parameters

notification TNotification

The notification.

cancellationToken CancellationToken

Cancellation token.

Returns

Task

Type Parameters

TNotification

The notification type.

Send(object, CancellationToken)

Sends a request whose type is only known at runtime. The object must implement IRequest<TResponse>; the response is returned as object.

public Task<object?> Send(object request, CancellationToken cancellationToken = default)

Parameters

request object

The request.

cancellationToken CancellationToken

Cancellation token.

Returns

Task<object>

Send<TResponse>(IRequest<TResponse>, CancellationToken)

Sends a request and returns its response after running the pipeline.

public Task<TResponse> Send<TResponse>(IRequest<TResponse> request, CancellationToken cancellationToken = default)

Parameters

request IRequest<TResponse>

The request.

cancellationToken CancellationToken

Cancellation token.

Returns

Task<TResponse>

Type Parameters

TResponse

The response type.

Send<TRequest>(TRequest, CancellationToken)

Sends a command (a request without a response) after running the pipeline.

public Task Send<TRequest>(TRequest request, CancellationToken cancellationToken = default) where TRequest : IRequest

Parameters

request TRequest

The request.

cancellationToken CancellationToken

Cancellation token.

Returns

Task

Type Parameters

TRequest

The request type.