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 < , > ) ) ;
} ) ;
具有用于开放泛型的附加方法和用于显式服务类型的重载。