MediatR
v12.4.1
.NET 中的簡單中介實現
沒有依賴關係的進程內訊息傳遞。
支援請求/回應、命令、查詢、通知和事件、同步和非同步,並透過 C# 通用變異數進行智慧調度。
維基百科中的範例。
您應該使用 NuGet 安裝 MediatR:
Install-Package MediatR
或透過 .NET Core 命令列介面:
dotnet add package MediatR
來自套件管理器控制台或 .NET Core CLI 的任一命令都會下載並安裝 MediatR 以及所有必要的依賴項。
僅參考 MediatR 的合約,其中包括:
IRequest
(包括通用變體)INotification
IStreamRequest
新增對 MediatR.Contracts 的套件引用
當您的 MediatR 合約位於與處理程序不同的組件/專案中時,此套件非常有用。範例場景包括:
IServiceCollection
註冊MediatR 直接支援Microsoft.Extensions.DependencyInjection.Abstractions
。註冊各種 MediatR 服務和處理程序:
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<Startup>());
或使用程序集:
services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly));
這註冊:
IMediator
作為瞬態ISender
作為瞬態IPublisher
作為瞬態IRequestHandler<,>
作為瞬態的具體實現IRequestHandler<>
作為瞬態的具體實現INotificationHandler<>
作為瞬態的具體實現IStreamRequestHandler<>
作為瞬態的具體實現IRequestExceptionHandler<,,>
作為瞬態的具體實現IRequestExceptionAction<,>)
作為瞬態的具體實現這也註冊了以下開放通用實作:
INotificationHandler<>
IRequestExceptionHandler<,,>
IRequestExceptionAction<,>
註冊行為、流行為、前置/後處理器:
services . AddMediatR ( cfg => {
cfg . RegisterServicesFromAssembly ( typeof ( Startup ) . Assembly ) ;
cfg . AddBehavior < PingPongBehavior > ( ) ;
cfg . AddStreamBehavior < PingPongStreamBehavior > ( ) ;
cfg . AddRequestPreProcessor < PingPreProcessor > ( ) ;
cfg . AddRequestPostProcessor < PingPongPostProcessor > ( ) ;
cfg . AddOpenBehavior ( typeof ( GenericBehavior < , > ) ) ;
} ) ;
具有用於開放泛型的附加方法和用於顯式服務類型的重載。