public async Task <TResponse> Handle(CancellationToken cancellationToken) { var preHandler = new PreHandler <TCommand>(async(message, parameters, ct) => await Task.FromResult(0)); while (_prePipes.Count > 0) { var pipe = _prePipes.Pop(); preHandler = pipe(preHandler); } var command = _buildCommandFunc(Parameters); await preHandler(command, Parameters, cancellationToken); var cmdResult = await _mediator.SendAsync <TResponse>(command); var postHandler = new PostHandler <TCommand, TResponse>(async(message, response, ct) => await Task.FromResult(response)); while (_postPipes.Count > 0) { var pipe = _postPipes.Pop(); postHandler = pipe(postHandler); } var result = await postHandler(command, cmdResult, cancellationToken); return(result); }
private static IList Pr(string targetFile, PreHandler preHandler) { Compress compress = (Compress)preHandler; compress.Process(targetFile); return(new List <object>()); }
public static bool HandleArg <TEnv>(PreHandler <TEnv> handler, TEnv env, Args args, object ori, out object arg, out string err) { if (handler != null) { try { bool res = handler(env, args, ori, out arg, out err); return(res); } catch (Exception e) { arg = null; err = e.Message; return(false); } } arg = ori; err = null; return(true); }
public CommandNode <TEnv> Handles(PreHandler <TEnv> process) { Process = process; return(this); }