Implementasi mediator sederhana di .NET
Pesan dalam proses tanpa ketergantungan.
Mendukung permintaan/respons, perintah, kueri, notifikasi dan acara, sinkron dan asinkron dengan pengiriman cerdas melalui varian generik C#.
Contoh di wiki.
Anda harus menginstal MediatR dengan NuGet:
Install-Package MediatR
Atau melalui antarmuka baris perintah .NET Core:
dotnet add package MediatR
Perintah mana pun, dari Package Manager Console atau .NET Core CLI, akan mengunduh dan menginstal MediatR dan semua dependensi yang diperlukan.
Untuk merujuk hanya pada kontrak MediatR, yang meliputi:
IRequest
(termasuk varian umum)INotification
IStreamRequest
Tambahkan referensi paket ke MediatR.Contracts
Paket ini berguna dalam skenario di mana kontrak MediatR Anda berada dalam perakitan/proyek terpisah dari penangan. Contoh skenarionya meliputi:
IServiceCollection
MediatR mendukung Microsoft.Extensions.DependencyInjection.Abstractions
secara langsung. Untuk mendaftarkan berbagai layanan dan penangan MediatR:
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<Startup>());
atau dengan perakitan:
services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly));
Ini mencatat:
IMediator
sebagai sementaraISender
sebagai sementaraIPublisher
bersifat sementaraIRequestHandler<,>
implementasi konkrit bersifat sementaraIRequestHandler<>
implementasi konkrit bersifat sementaraINotificationHandler<>
implementasi konkrit bersifat sementaraIStreamRequestHandler<>
implementasi konkrit bersifat sementaraIRequestExceptionHandler<,,>
implementasi konkrit bersifat sementaraIRequestExceptionAction<,>)
implementasi konkrit bersifat sementaraIni juga mendaftarkan implementasi generik terbuka untuk:
INotificationHandler<>
IRequestExceptionHandler<,,>
IRequestExceptionAction<,>
Untuk mendaftarkan perilaku, mengalirkan perilaku, pemroses sebelum/sesudah:
services . AddMediatR ( cfg => {
cfg . RegisterServicesFromAssembly ( typeof ( Startup ) . Assembly ) ;
cfg . AddBehavior < PingPongBehavior > ( ) ;
cfg . AddStreamBehavior < PingPongStreamBehavior > ( ) ;
cfg . AddRequestPreProcessor < PingPreProcessor > ( ) ;
cfg . AddRequestPostProcessor < PingPongPostProcessor > ( ) ;
cfg . AddOpenBehavior ( typeof ( GenericBehavior < , > ) ) ;
} ) ;
Dengan metode tambahan untuk obat generik terbuka dan kelebihan beban untuk jenis layanan eksplisit.