IValitResult IValitRule <TObject> .Validate(TObject @object)
        {
            @object.ThrowIfNull();

            var collection = _collectionSelector(@object);

            var result = ValitResult.Success;

            foreach (var property in collection)
            {
                Func <TObject, TProperty> selector = _ => property;
                var nestedObjectValitRule          = new NestedObjectValitRule <TObject, TProperty>(selector, _valitRulesProvider, _strategy);

                result &= nestedObjectValitRule.Validate(@object);

                if (!result.Succeeded)
                {
                    _strategy.Fail(default(IValitRule <TObject>), result, out bool cancel);
                    if (cancel)
                    {
                        break;
                    }
                }
            }

            return(result);
        }
示例#2
0
        IValitResult IValitRule <TObject> .Validate(TObject @object)
        {
            @object.ThrowIfNull();

            var collection = _collectionSelector(@object);

            var result = ValitResult.Success;

            foreach (var property in collection)
            {
                Func <TObject, TProperty> selector = _ => property;
                var lastEnsureRule = _ruleFunc(new ValitRule <TObject, TProperty>(selector, _messageProvider));
                var propertyRules  = lastEnsureRule.GetAllEnsureRules();

                result &= ValidatePropertyRules(propertyRules, @object);

                if (!result.Succeeded)
                {
                    _strategy.Fail(default(IValitRule <TObject>), result, out bool cancel);
                    if (cancel)
                    {
                        break;
                    }
                }
            }

            return(result);
        }
示例#3
0
        private IValitResult Validate(IEnumerable <IValitRule <TObject> > rules)
        {
            var result = ValitResult.Success;

            foreach (var rule in rules.ToList())
            {
                result &= rule.Validate(_object);

                if (!result.Succeeded)
                {
                    _strategy.Fail(rule, result, out bool cancel);
                    if (cancel)
                    {
                        break;
                    }
                }
            }

            _strategy.Done(result);

            return(result);
        }
示例#4
0
        internal static IValitResult ValidateRules <TObject>(this IEnumerable <IValitRule <TObject> > rules, IValitStrategy strategy, TObject @object) where TObject : class
        {
            rules.ThrowIfNull();

            var result = ValitResult.Success;

            foreach (var rule in rules.ToList())
            {
                result &= rule.Validate(@object);

                if (!result.Succeeded)
                {
                    strategy.Fail(rule, result, out bool cancel);
                    if (cancel)
                    {
                        break;
                    }
                }
            }

            strategy.Done(result);

            return(result);
        }