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: about 1 month 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-04-27T18:26:39.000Z (about 1 month ago)
- Last Synced: 2024-05-02T00:09:13.259Z (about 1 month ago)
- Topics: hacktoberfest
- Language: C#
- Homepage:
- Size: 5.65 MB
- Stars: 10,640
- Watchers: 292
- Forks: 1,136
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-ddd - MediatR - Supports request/response, commands, queries, notifications and events, synchronous and async with intelligent dispatching via C# generic variance. (Libraries and Frameworks / .NET)
- awsome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- Awesome-Nuget-Packages - **MediatR**
- awesome - jbogard/MediatR - Simple, unambitious mediator implementation in .NET (C\#)
- awesome-csharp - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- awesome - jbogard/MediatR - Simple, unambitious mediator implementation in .NET (C\#)
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- awesome-stars - jbogard/MediatR - Simple, unambitious mediator implementation in .NET (C# #)
- Quasi-awesome-list - MediatR
- awesome-stars - MediatR
- awesome-reference-tools - MediatR
- awesome-dot-dev - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-stars - MediatR
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Misc)
- awesome-stars - MediatR
- awesome-dotnet-core-master - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Misc)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-dotnet-core - MediatR - 中介模式库。 (框架, 库和工具 / 消息队列)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-dotnet-cn - MediatR - .NET中朴实无华的中介者实现。 (时间聚合器和发送器)
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Event aggregator and messenger)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- system-architecture-awesome - MediatR - Simple, unambitious mediator implementation in .NET. (Queue and Messaging)
- awesome-dotnet - MediatR - Simple, unambitious mediator implementation in .NET (Misc)
- awesome-csharp - MediatR - Simple, unambitious mediator implementation in .NET. (Cheat sheets / Libraries)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
- awesome-dotnet-core - MediatR - Simple, unambitious mediator implementation in .NET. (Frameworks, Libraries and Tools / Queue and Messaging)
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.