GitHub - LuckyPennySoftware/MediatR: Simple, unambitious mediator implementation in .NET (original) (raw)
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:
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)INotificationIStreamRequest
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:
IMediatoras transientISenderas transientIPublisheras transientIRequestHandler<,>concrete implementations as transientIRequestHandler<>concrete implementations as transientINotificationHandler<>concrete implementations as transientIStreamRequestHandler<>concrete implementations as transientIRequestExceptionHandler<,,>concrete implementations as transientIRequestExceptionAction<,>)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(); cfg.AddStreamBehavior(); cfg.AddRequestPreProcessor(); cfg.AddRequestPostProcessor(); cfg.AddOpenBehavior(typeof(GenericBehavior<,>)); });
With additional methods for open generics and overloads for explicit service types.
Setting the license key
You can set the license key when registering MediatR:
services.AddMediatR(cfg => { cfg.LicenseKey = ""; })
Or if not using Microsoft.Extensions.DependencyInjection:
Mediator.LicenseKey = "";
Tip
The license key does not need to be set on client applications (such as Blazor WASM). Turn off the license warning by configuring logging in your logging start configuration:builder.Logging.AddFilter("LuckyPennySoftware.MediatR.License", LogLevel.None);
You can register for your license key at MediatR.io