コード例 #1
0
        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);
        }
コード例 #2
0
        private static IList Pr(string targetFile, PreHandler preHandler)
        {
            Compress compress = (Compress)preHandler;

            compress.Process(targetFile);
            return(new List <object>());
        }
コード例 #3
0
 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);
 }
コード例 #4
0
 public CommandNode <TEnv> Handles(PreHandler <TEnv> process)
 {
     Process = process;
     return(this);
 }