2017-02-17 11 views
0

나는 MediatR의 새로운 파이프 라인 기능을 시도하고 싶습니다 ?

+0

은 포스트 프로세서가 실행되지 않았습니까? 또는 처리기? 코드를 보여줄 수 있다면 도움이 될 것입니다. –

+0

다른 표준 핸들러가 실행됩니다. – Larsi

답변

0

this unit test과 같은 후가공 관련 동작을 등록해야합니다.

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

behavior 그건 당신이 등록 된 모든 포스트 프로세서를 취득하고이를 실행합니다 : 같은

등록 코드가 보일 것이다.

포스트 프로세서가 두 번 실행하는 방법에 대한 코멘트 후 편집

, 나는 ASP.NET 코어에 내장 된 DI 컨테이너 MediatR를 등록하는 코드를 살펴 있었는데, 그것은의 인스턴스를 밝혀 here과 같이 IRequestPreProcessor<TRequest, TResponse>IRequestPostProcessor<TRequest, TResponse>이 자동으로 등록됩니다. 파이프 라인에서 실행되도록하기 위해 남겨진 일은 연관된 동작을 등록하는 것입니다. 따라서 필요한 등록은 다음과 같습니다.

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

감사합니다. 제안한대로 동작을 등록하면 Posthandler가 실행되지만 두 번 실행됩니다. 어떤 아이디 왜? – Larsi

+1

네, 제 대답을 편집했습니다. 나는 프로세서를 등록하는 것이 이상하지만 연관된 행동은 등록하지 않는다. 나는 GitHub에서 언젠가 이슈를 열 수도있다. –