private static void Build(MemberInfo memberInfo) { List <IChoSurrogateValidator> validators = new List <IChoSurrogateValidator>(); ChoCompositeValidator compositeValidator = new ChoAndCompositeValidator(); foreach (Attribute memberCallAttribute in ChoType.GetMemberAttributesByBaseType(memberInfo, typeof(Attribute))) { foreach (IChoValidationManager validationManager in ChoValidationManagerSettings.Me.ValidationManagers) { if (memberCallAttribute is ChoCompositeValidatorAttribute) { if (((ChoCompositeValidatorAttribute)memberCallAttribute).CompositionType == ChoCompositionType.Or) { if (validators.Count > 0) { compositeValidator.Add(validators.ToArray()); validators.Add(compositeValidator); validators.Clear(); } compositeValidator = new ChoOrCompositeValidator(); } } else if (validationManager.IsValid(memberCallAttribute)) { IChoSurrogateValidator validator = validationManager.CreateValidator(memberCallAttribute, ValidationScope.Before, ValidatorSource.Attribute); if (validator != null) { validators.Add(validator); } } } } if (validators.Count > 0) { compositeValidator.Add(validators.ToArray()); validators.Add(compositeValidator); } _objectMemberValidatorCache.Add(memberInfo, new ChoAndCompositeValidator(validators.ToArray())); }