MediatR 12.4.1

MediatR

CI NuGet NuGet MyGet (dev)

Simple mediator implementation in .NET

In-process messaging with no dependencies.

Supports request/response, commands, queries, notifications and events, synchronous and async with intelligent dispatching via C# generic variance.

Examples in the wiki.

Installing MediatR

You should install MediatR with NuGet:

Install-Package MediatR

Or via the .NET Core command line interface:

dotnet add package MediatR

Either commands, from Package Manager Console or .NET Core CLI, will download and install MediatR and all required dependencies.

Using Contracts-Only Package

To reference only the contracts for MediatR, which includes:

  • IRequest (including generic variants)
  • INotification
  • IStreamRequest

Add a package reference to MediatR.Contracts

This package is useful in scenarios where your MediatR contracts are in a separate assembly/project from handlers. Example scenarios include:

  • API contracts
  • GRPC contracts
  • Blazor

Registering with IServiceCollection

MediatR supports Microsoft.Extensions.DependencyInjection.Abstractions directly. To register various MediatR services and handlers:

services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<Startup>());

or with an assembly:

services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly));

This registers:

  • IMediator as transient
  • ISender as transient
  • IPublisher as transient
  • IRequestHandler<,> concrete implementations as transient
  • IRequestHandler<> concrete implementations as transient
  • INotificationHandler<> concrete implementations as transient
  • IStreamRequestHandler<> concrete implementations as transient
  • IRequestExceptionHandler<,,> concrete implementations as transient
  • IRequestExceptionAction<,>) concrete implementations as transient

This also registers open generic implementations for:

  • INotificationHandler<>
  • IRequestExceptionHandler<,,>
  • IRequestExceptionAction<,>

To register behaviors, stream behaviors, pre/post processors:

services.AddMediatR(cfg => {
    cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly);
    cfg.AddBehavior<PingPongBehavior>();
    cfg.AddStreamBehavior<PingPongStreamBehavior>();
    cfg.AddRequestPreProcessor<PingPreProcessor>();
    cfg.AddRequestPostProcessor<PingPongPostProcessor>();
    cfg.AddOpenBehavior(typeof(GenericBehavior<,>));
    });

With additional methods for open generics and overloads for explicit service types.

Showing the top 20 packages that depend on MediatR.

Packages Downloads
SanedBuildingBlocks
This package built for OIG-Saned
3,423
SanedBuildingBlocks
This package built for OIG-Saned
2,419
SanedBuildingBlocks
This package built for OIG-Saned
912
SanedBuildingBlocks
This package built for OIG-Saned
833
SanedBuildingBlocks
This package built for OIG-Saned
753
SanedBuildingBlocks
This package built for OIG-Saned
647
SanedBuildingBlocks
This package built for OIG-Saned
456
SanedBuildingBlocks
This package built for OIG-Saned
422
SanedBuildingBlocks
This package built for OIG-Saned
276
SanedBuildingBlocks
This package built for OIG-Saned
269
SanedBuildingBlocks
This package built for OIG-Saned
221
SanedBuildingBlocks
This package built for OIG-Saned
191
SanedBuildingBlocks
This package built for OIG-Saned
186
SanedBuildingBlocks
This package built for OIG-Saned
184
SanedBuildingBlocks
This package built for OIG-Saned
157
SanedBuildingBlocks
This package built for OIG-Saned
125
SanedBuildingBlocks
This package built for OIG-Saned
121
SanedBuildingBlocks
This package built for OIG-Saned
118
SanedBuildingBlocks
This package built for OIG-Saned
115
SanedBuildingBlocks
This package built for OIG-Saned
110

Version Downloads Last updated
12.4.1 17 10/02/2024
12.4.0 14 03/10/2025
12.3.0 16 03/09/2025
12.2.0 17 03/09/2025
12.1.1 16 09/22/2023
12.0.1 15 03/10/2025
11.1.0 15 03/10/2025
11.0.0 16 03/09/2025
10.0.1 16 03/09/2025
10.0.0 16 03/09/2025
9.0.0 14 06/19/2023
8.1.0 15 03/10/2025
8.0.2 15 03/09/2025
8.0.1 15 03/09/2025
8.0.0 15 03/09/2025
7.0.0 15 03/10/2025
6.0.0 17 03/09/2025
5.1.0 13 03/09/2025
5.0.1 16 03/09/2025
5.0.1-alpha-0002 15 03/09/2025
5.0.1-alpha-0001 16 03/09/2025
4.1.0 15 03/10/2025
4.0.1 13 03/09/2025
4.0.0 15 03/09/2025
4.0.0-alpha-0002 16 03/10/2025
4.0.0-alpha 14 03/09/2025
3.0.1 15 03/09/2025
3.0.0 13 03/09/2025
2.1.0 15 03/09/2025
2.1.0-beta-19 14 03/09/2025
2.0.2 15 03/09/2025
2.0.1 15 03/09/2025
2.0.0 15 03/09/2025
2.0.0-beta-005 15 03/09/2025
2.0.0-beta-004 15 03/09/2025
2.0.0-beta-003 14 03/10/2025
2.0.0-beta-002 15 03/09/2025
2.0.0-beta-001 15 03/09/2025
1.0.0 15 03/10/2025
0.5.0 15 03/09/2025
0.4.0 15 03/10/2025
0.3.0 13 03/09/2025
0.2.0 15 03/09/2025
0.1.0 15 03/10/2025