public override BrokenRules Validate <T>(T target, ValidationCallContext callContext)
        {
            callContext = callContext ?? ValidationCallContext.AllRules;

            LogValidationRequested(target, callContext);
            ICollection <IValidationProvider <T> > providers = GetValidationProviders <T>();

            LogValidatorsAboutToBeApplied(providers, target);

            var    results       = new List <BrokenRules>();
            double totalDuration = 0d;

            foreach (IValidationProvider <T> provider in providers)
            {
                double duration;
                ValidationProviderResult result = ExecuteValidation(target, callContext, provider, out duration);
                totalDuration += duration;
                LogBrokenRules(result, provider);
                results.Add(result.BrokenRules);
                if (!result.BrokenRules.IsValid && StopOnFirstBrokenRules)
                {
                    break;
                }
            }

            LogValidationFinished(totalDuration);
            return(BrokenRules.Merge(results));
        }
Beispiel #2
0
        public override BrokenRules Validate <T>(T target, ValidationCallContext callContext)
        {
            BrokenRules result = BrokenRules.None;

            foreach (var runner in _runners)
            {
                result = BrokenRules.Merge(new[] { result, runner.Validate(target, callContext) });
                if (StopOnFirstBrokenRules)
                {
                    break;
                }
            }
            return(result);
        }