Implémentation simple du médiateur dans .NET
Messagerie en cours sans dépendances.
Prend en charge les requêtes/réponses, les commandes, les requêtes, les notifications et les événements, synchrones et asynchrones avec répartition intelligente via une variance générique C#.
Exemples dans le wiki.
Vous devez installer MediatR avec NuGet :
Install-Package MediatR
Ou via l'interface de ligne de commande .NET Core :
dotnet add package MediatR
Les commandes, depuis la console Package Manager ou .NET Core CLI, téléchargeront et installeront MediatR et toutes les dépendances requises.
Pour référencer uniquement les contrats MediatR, qui comprennent :
IRequest
(y compris les variantes génériques)INotification
IStreamRequest
Ajouter une référence de package à MediatR.Contracts
Ce package est utile dans les scénarios où vos contrats MediatR se trouvent dans un assemblage/projet distinct des gestionnaires. Voici des exemples de scénarios :
IServiceCollection
MediatR prend directement en charge Microsoft.Extensions.DependencyInjection.Abstractions
. Pour enregistrer divers services et gestionnaires MediatR :
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<Startup>());
ou avec un assemblage :
services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly));
Celui-ci enregistre :
IMediator
comme transitoireISender
comme transitoireIPublisher
comme transitoireIRequestHandler<,>
implémentations concrètes comme transitoiresIRequestHandler<>
implémentations concrètes comme transitoiresINotificationHandler<>
implémentations concrètes comme transitoiresIStreamRequestHandler<>
implémentations concrètes comme transitoiresIRequestExceptionHandler<,,>
implémentations concrètes comme transitoiresIRequestExceptionAction<,>)
implémentations concrètes comme transitoiresCela enregistre également les implémentations génériques ouvertes pour :
INotificationHandler<>
IRequestExceptionHandler<,,>
IRequestExceptionAction<,>
Pour enregistrer des comportements, des comportements de flux, des pré/post-processeurs :
services . AddMediatR ( cfg => {
cfg . RegisterServicesFromAssembly ( typeof ( Startup ) . Assembly ) ;
cfg . AddBehavior < PingPongBehavior > ( ) ;
cfg . AddStreamBehavior < PingPongStreamBehavior > ( ) ;
cfg . AddRequestPreProcessor < PingPreProcessor > ( ) ;
cfg . AddRequestPostProcessor < PingPongPostProcessor > ( ) ;
cfg . AddOpenBehavior ( typeof ( GenericBehavior < , > ) ) ;
} ) ;
Avec des méthodes supplémentaires pour les génériques ouverts et des surcharges pour les types de services explicites.