2017-02-17 1 views
0

私はMediatRに新しいパイプライン機能を試してみたいです?

+0

は実行されていないポストプロセッサのみですか?またはハンドラ?いくつかのコードを表示することができれば助けになります。 –

+0

その他の標準ハンドラが実行されます。 – Larsi

答えて

0

this unit testのようなポストプロセッサに関連する動作を登録する必要があります。 behaviorは、あなたが登録されているすべてのポストプロセッサを取得し、それらを実行することを

services.AddMediatR(); 
services.AddTransient(typeof(IRequestPostProcessor<,>), typeof(PostHandler<,>)); 
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestPostProcessorBehavior<,>)); 

あなたの登録コードは次のようになります。

編集

ポストプロセッサは二回実行についてのコメントの後、私は、内蔵のDIコンテナASP.NETコアにMediatRを登録するコードを見ていた、そしてそれはのインスタンスが判明hereのように、IRequestPreProcessor<TRequest, TResponse>IRequestPostProcessor<TRequest, TResponse>は自動的に登録されます。それらをパイプラインで実行させるために残されていることは、関連する動作を登録することだけです。したがって、必要な登録は次のとおりです。

services.AddMediatR(); 
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestPostProcessorBehavior<,>)); 
+0

ありがとうございます。提案したように振る舞いを登録すると、Posthandlerは実行されますが、2回実行されます。どんなideですか? – Larsi

+1

うん、私は私の答えを編集しました。プロセッサーを登録するのは奇妙だが、関連する動作は登録されていない。私はいつかGitHubで問題を開くかもしれません。 –