public override bool BeforeExecute(IOperation operation)
        {
            var accumulatedErrors = new List <ValidationFailure>();

            foreach (var input in operation.Inputs)
            {
                if (input == null)
                {
                    continue;
                }
                var bindingResult = input.Binder.BuildObject();
                if (bindingResult == null || !bindingResult.Successful)
                {
                    continue;
                }
                var validatorType = typeof(IValidator <>).MakeGenericType(bindingResult.Instance.GetType());
                if (!_resolver.HasDependency(validatorType))
                {
                    continue;
                }
                var validator = _resolver.Resolve(validatorType) as IValidator;
                if (validator == null)
                {
                    continue;
                }
                var resultForParameter = validator.Validate(bindingResult.Instance);
                accumulatedErrors.AddRange(resultForParameter.Errors);
            }
            if (!accumulatedErrors.Any())
            {
                return(true);
            }
            var body = new ResponseForInvalidRequest(accumulatedErrors);

            _context.OperationResult = new OperationResult.BadRequest {
                ResponseResource = body
            };
            LogBadRequest(operation, body);
            return(false);
        }
 public override bool BeforeExecute(IOperation operation)
 {
     var accumulatedErrors = new List<ValidationFailure>();
     foreach (var input in operation.Inputs)
     {
         if (input == null)
         {
             continue;
         }
         var bindingResult = input.Binder.BuildObject();
         if (bindingResult == null || !bindingResult.Successful)
         {
             continue;
         }
         var validatorType = typeof(IValidator<>).MakeGenericType(bindingResult.Instance.GetType());
         if (!_resolver.HasDependency(validatorType))
         {
             continue;
         }
         var validator = _resolver.Resolve(validatorType) as IValidator;
         if (validator == null)
         {
             continue;
         }
         var resultForParameter = validator.Validate(bindingResult.Instance);
         accumulatedErrors.AddRange(resultForParameter.Errors);
     }
     if (!accumulatedErrors.Any())
     {
         return true;
     }
     var body = new ResponseForInvalidRequest(accumulatedErrors);
     _context.OperationResult = new OperationResult.BadRequest { ResponseResource = body };
     LogBadRequest(operation, body);
     return false;
 }