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