Einfache Mediator-Implementierung in .NET
In-Prozess-Messaging ohne Abhängigkeiten.
Unterstützt Anfragen/Antworten, Befehle, Abfragen, Benachrichtigungen und Ereignisse, synchron und asynchron mit intelligentem Dispatching über die generische C#-Varianz.
Beispiele im Wiki.
Sie sollten MediatR mit NuGet installieren:
Install-Package MediatR
Oder über die .NET Core-Befehlszeilenschnittstelle:
dotnet add package MediatR
Mit beiden Befehlen von der Package Manager-Konsole oder der .NET Core-CLI werden MediatR und alle erforderlichen Abhängigkeiten heruntergeladen und installiert.
Als Referenz dienen nur die Verträge für MediatR, die Folgendes umfassen:
IRequest
(einschließlich generischer Varianten)INotification
IStreamRequest
Fügen Sie einen Paketverweis auf MediatR.Contracts hinzu
Dieses Paket ist in Szenarien nützlich, in denen sich Ihre MediatR-Verträge in einer von den Handlern getrennten Assembly/einem separaten Projekt befinden. Beispielszenarien sind:
IServiceCollection
MediatR unterstützt Microsoft.Extensions.DependencyInjection.Abstractions
direkt. So registrieren Sie verschiedene MediatR-Dienste und -Handler:
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<Startup>());
oder mit einer Baugruppe:
services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly));
Dies registriert:
IMediator
als transientISender
als transientIPublisher
als transientIRequestHandler<,>
konkrete Implementierungen als transientIRequestHandler<>
konkrete Implementierungen als transientINotificationHandler<>
konkrete Implementierungen als transientIStreamRequestHandler<>
konkrete Implementierungen als transientIRequestExceptionHandler<,,>
konkrete Implementierungen als transientIRequestExceptionAction<,>)
konkrete Implementierungen als transientDies registriert auch offene generische Implementierungen für:
INotificationHandler<>
IRequestExceptionHandler<,,>
IRequestExceptionAction<,>
So registrieren Sie Verhaltensweisen, Stream-Verhaltensweisen und Prä-/Postprozessoren:
services . AddMediatR ( cfg => {
cfg . RegisterServicesFromAssembly ( typeof ( Startup ) . Assembly ) ;
cfg . AddBehavior < PingPongBehavior > ( ) ;
cfg . AddStreamBehavior < PingPongStreamBehavior > ( ) ;
cfg . AddRequestPreProcessor < PingPreProcessor > ( ) ;
cfg . AddRequestPostProcessor < PingPongPostProcessor > ( ) ;
cfg . AddOpenBehavior ( typeof ( GenericBehavior < , > ) ) ;
} ) ;
Mit zusätzlichen Methoden für offene Generika und Überladungen für explizite Diensttypen.