Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class AsyncMediatorPipeline<TRequest, TResponse> : IAsyncRequestHandler<TRequest, TResponse> where TRequest : IAsyncRequest<TResponse>
- {
- private readonly IAsyncRequestHandler<TRequest, TResponse> inner;
- private readonly IAsyncPreRequestHandler<TRequest>[] preRequestHandlers;
- private readonly IAsyncPostRequestHandler<TRequest, TResponse>[] postRequestHandlers;
- public AsyncMediatorPipeline(IAsyncRequestHandler<TRequest, TResponse> inner, IAsyncPreRequestHandler<TRequest>[] preRequestHandlers, IAsyncPostRequestHandler<TRequest, TResponse>[] postRequestHandlers)
- {
- this.inner = inner;
- this.preRequestHandlers = preRequestHandlers;
- this.postRequestHandlers = postRequestHandlers;
- }
- public async Task<TResponse> Handle(TRequest message)
- {
- foreach (var preRequestHandler in preRequestHandlers)
- {
- await preRequestHandler.Handle(message);
- }
- var result = await inner.Handle(message);
- foreach (var postRequestHandler in postRequestHandlers)
- {
- await postRequestHandler.Handle(message, result);
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement