我想在 MediatR 中尝试新的管道功能:https : //github.com/jbogard/MediatR/wiki/Behaviors
我尝试了以下操作,但没有执行
services.AddMediatR();
services.AddTransient(typeof(IRequestPostProcessor<,>), typeof(PostHandler<,>));
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
您需要注册与后处理器相关的行为,如本单元测试所示。
您的注册码如下所示:
services.AddMediatR();
services.AddTransient(typeof(IRequestPostProcessor<,>), typeof(PostHandler<,>));
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestPostProcessorBehavior<,>));
Run Code Online (Sandbox Code Playgroud)
该行为将获取您注册的所有后处理器并执行它们。
编辑
在对后处理器运行两次发表评论后,我查看了在 ASP.NET Core 内置 DI 容器中注册 MediatR 的代码,结果发现IRequestPreProcessor<TRequest, TResponse>和 的实例IRequestPostProcessor<TRequest, TResponse>会自动注册,如您在此处看到的。要让它们在管道中运行,剩下要做的就是注册相关的行为。所以必要的注册是:
services.AddMediatR();
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestPostProcessorBehavior<,>));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |