示例#1
0
        private bool VisitChildren(IValidationStrategy strategy)
        {
            var isValid    = true;
            var enumerator = strategy.GetChildren(_metadata, _key, _model);

            while (enumerator.MoveNext())
            {
                var metadata = enumerator.Current.Metadata;
                var model    = enumerator.Current.Model;
                var key      = enumerator.Current.Key;
// Detached: Do not recursively validate associated properties.
                bool skip = false;
                if (metadata.MetadataKind == Metadata.ModelMetadataKind.Property)
                {
                    PropertyInfo propInfo = _metadata.ModelType.GetRuntimeProperty(enumerator.Current.Metadata.PropertyName);
                    if (propInfo != null)
                    {
                        skip = propInfo.GetCustomAttribute <AssociatedAttribute>() != null || propInfo.GetCustomAttribute <ManyToManyAttribute>() != null;
                    }
                }
//
                if (!skip)
                {
                    isValid &= Visit(metadata, key, model);
                }
            }

            return(isValid);
        }
示例#2
0
        private bool VisitChildren(IValidationStrategy strategy)
        {
            var isValid    = true;
            var enumerator = strategy.GetChildren(_metadata, _key, _model);

            while (enumerator.MoveNext())
            {
                var metadata = enumerator.Current.Metadata;
                var model    = enumerator.Current.Model;
                var key      = enumerator.Current.Key;

                isValid &= Visit(metadata, key, model);
            }

            return(isValid);
        }
示例#3
0
        private bool VisitChildren(IValidationStrategy strategy)
        {
            var isValid     = true;
            var enumerator  = strategy.GetChildren(_metadata, _key, _model);
            var parentEntry = new ValidationEntry(_metadata, _key, _model);

            while (enumerator.MoveNext())
            {
                var entry    = enumerator.Current;
                var metadata = entry.Metadata;
                var key      = entry.Key;
                if (metadata.PropertyValidationFilter?.ShouldValidateEntry(entry, parentEntry) == false)
                {
                    SuppressValidation(key);
                    continue;
                }

                isValid &= Visit(metadata, key, entry.Model);
            }

            return(isValid);
        }
示例#4
0
        private bool VisitChildren(IValidationStrategy strategy)
        {
            var isValid = true;
            var enumerator = strategy.GetChildren(_metadata, _key, _model);

            while (enumerator.MoveNext())
            {
                var metadata = enumerator.Current.Metadata;
                var model = enumerator.Current.Model;
                var key = enumerator.Current.Key;

                isValid &= Visit(metadata, key, model);
            }

            return isValid;
        }