MediatR
v12.4.1
.NET でのシンプルなメディエーターの実装
依存関係のないインプロセスメッセージング。
C# 汎用バリアンスによるインテリジェントなディスパッチにより、リクエスト/レスポンス、コマンド、クエリ、通知、イベント、同期および非同期をサポートします。
Wiki の例。
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 < , > ) ) ;
} ) ;
オープン ジェネリックスと明示的なサービス タイプのオーバーロード用の追加メソッドを使用します。