Advertisement
Guest User

Untitled

a guest
Jan 26th, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. public class AsyncMediatorPipeline<TRequest, TResponse> : IAsyncRequestHandler<TRequest, TResponse> where TRequest : IAsyncRequest<TResponse>
  2. {
  3.  
  4. private readonly IAsyncRequestHandler<TRequest, TResponse> inner;
  5. private readonly IAsyncPreRequestHandler<TRequest>[] preRequestHandlers;
  6. private readonly IAsyncPostRequestHandler<TRequest, TResponse>[] postRequestHandlers;
  7.  
  8. public AsyncMediatorPipeline(IAsyncRequestHandler<TRequest, TResponse> inner, IAsyncPreRequestHandler<TRequest>[] preRequestHandlers, IAsyncPostRequestHandler<TRequest, TResponse>[] postRequestHandlers)
  9. {
  10. this.inner = inner;
  11. this.preRequestHandlers = preRequestHandlers;
  12. this.postRequestHandlers = postRequestHandlers;
  13. }
  14.  
  15. public async Task<TResponse> Handle(TRequest message)
  16. {
  17. foreach (var preRequestHandler in preRequestHandlers)
  18. {
  19. await preRequestHandler.Handle(message);
  20. }
  21.  
  22. var result = await inner.Handle(message);
  23.  
  24. foreach (var postRequestHandler in postRequestHandlers)
  25. {
  26. await postRequestHandler.Handle(message, result);
  27. }
  28. return result;
  29. }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement