Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alsami/mediatr.extensions.autofac.dependencyinjection
Autofac plug-in for MediatR.
https://github.com/alsami/mediatr.extensions.autofac.dependencyinjection
autofac cqrs dependencyinjection ioc-container mediator-pattern mediatr nuget
Last synced: 6 days ago
JSON representation
Autofac plug-in for MediatR.
- Host: GitHub
- URL: https://github.com/alsami/mediatr.extensions.autofac.dependencyinjection
- Owner: alsami
- License: mit
- Created: 2018-07-07T18:42:24.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-06-28T06:51:35.000Z (4 months ago)
- Last Synced: 2024-10-16T15:28:44.180Z (21 days ago)
- Topics: autofac, cqrs, dependencyinjection, ioc-container, mediator-pattern, mediatr, nuget
- Language: C#
- Homepage:
- Size: 487 KB
- Stars: 55
- Watchers: 2
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# MediatR.Extensions.Autofac.DependencyInjection
[![Build Application](https://github.com/alsami/MediatR.Extensions.Autofac.DependencyInjection/actions/workflows/push.yml/badge.svg?branch=main&event=push)](https://github.com/alsami/MediatR.Extensions.Autofac.DependencyInjection/actions/workflows/push.yml)
[![codecov](https://codecov.io/gh/alsami/MediatR.Extensions.Autofac.DependencyInjection/branch/master/graph/badge.svg)](https://codecov.io/gh/alsami/MediatR.Extensions.Autofac.DependencyInjection)[![NuGet](https://img.shields.io/nuget/vpre/MediatR.Extensions.Autofac.DependencyInjection.svg)](https://www.nuget.org/packages/MediatR.Extensions.Autofac.DependencyInjection)
![Nuget](https://img.shields.io/nuget/dt/MediatR.Extensions.Autofac.DependencyInjection)This is a cross platform library, supporting .NET standard 2.0, that serves as an extension for [Autofac's containerbuilder](https://autofac.org/).
It will register all necessary classes and interfaces of Jimmy Bogard's [MediatR](https://github.com/jbogard/MediatR) implementation to the autofac-container
so you can use cqrs and the [mediator pattern](https://sourcemaking.com/design_patterns/mediator) right ahread without worrying about setting up required infrastracture code.## Installation
This package is available via nuget. You can install it using Visual-Studio-Nuget-Browser or by using the dotnet-cli
```
dotnet add package MediatR.Extensions.Autofac.DependencyInjection
```If you want to add a specific version of this package
```
dotnet add package MediatR.Extensions.Autofac.DependencyInjection --version 1.0.0
```For more information please visit the official [dotnet-cli documentation](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-add-package).
## Usage
After you have successfully installed the package go ahead to your class and use the extension.
```c#
public class Pong
{
public DateTime ResponseSendAt { get; }
public Pong(responseSendAt)
{
this.ResponseSendAt = responseSendAt;
}
}public class PingCommand : IRequest {} // Command
public class PingCommandHandler : IRequestHandler
{
public async Task Handle(PingCommand request, CancellationToken cancellationToken)
{
return await Task.FromResult(new Pong(DateTime.UtcNow)).ConfigureAwait(false);
}
}public class Program
{
public async Task Main(string[] args)
{
var builder = new ContainerBuilder();var configuration = MediatRConfigurationBuilder
.Create(typeof(ResponseCommand).Assembly)
.WithAllOpenGenericHandlerTypesRegistered()
.Build();// this will add all your Request- and Notificationhandler
// that are located in the same project as your program-class
builder.RegisterMediatR(configuration);
var container = builder.Build();
var mediator = container.Resolve();
var response = await mediator.Send(new PingCommand());
// more code here
}
}
```By default all `MediatR` dependencies will be registered as transient (`InstancePerDependency`). Starting with version `9.2.0` you can configure the scope
```csharp
var builder = new ContainerBuilder();var configuration = MediatRConfigurationBuilder
.Create(typeof(ResponseCommand).Assembly)
.WithAllOpenGenericHandlerTypesRegistered()
.WithRegistrationScope(RegistrationScope.Scoped) // currently only supported values are `Transient` and `Scoped`
.Build();builder.RegisterMediatR(configuration);
```For more information about the usage please check out the [samples](https://github.com/alsami/MediatR.Extensions.Autofac.DependencyInjection/tree/main/samples) and [tests](https://github.com/alsami/MediatR.Extensions.Autofac.DependencyInjection/tree/main/test) of the solution.