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); }
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); }
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); }
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; }