Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jbogard/mediatr
Simple, unambitious mediator implementation in .NET
https://github.com/jbogard/mediatr
hacktoberfest
Last synced: 15 days ago
JSON representation
Simple, unambitious mediator implementation in .NET
- Host: GitHub
- URL: https://github.com/jbogard/mediatr
- Owner: jbogard
- License: apache-2.0
- Created: 2014-03-03T15:01:22.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-09-11T18:39:03.000Z (2 months ago)
- Last Synced: 2024-10-15T13:05:39.383Z (29 days ago)
- Topics: hacktoberfest
- Language: C#
- Homepage:
- Size: 5.7 MB
- Stars: 11,080
- Watchers: 291
- Forks: 1,173
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
MediatR
=======![CI](https://github.com/jbogard/MediatR/workflows/CI/badge.svg)
[![NuGet](https://img.shields.io/nuget/dt/mediatr.svg)](https://www.nuget.org/packages/mediatr)
[![NuGet](https://img.shields.io/nuget/vpre/mediatr.svg)](https://www.nuget.org/packages/mediatr)
[![MyGet (dev)](https://img.shields.io/myget/mediatr-ci/v/MediatR.svg)](https://myget.org/gallery/mediatr-ci)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](https://github.com/jbogard/MediatR/wiki).
### Installing MediatR
You should install [MediatR with NuGet](https://www.nuget.org/packages/MediatR):
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](https://www.nuget.org/packages/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());
```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 transientThis also registers open generic implementations for:
- `INotificationHandler<>`
- `IRequestExceptionHandler<,,>`
- `IRequestExceptionAction<,>`To register behaviors, stream behaviors, pre/post processors:
```csharp
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.