public PropertyConstraintValidatorMapping(Type sourceType, IPropertyConstraintValidatorCreator validatorCreator)
 {
     if (sourceType == null)
     {
         throw new ArgumentNullException("sourceType");
     }
     if (!typeof(PropertyDefinitionConstraint).IsAssignableFrom(sourceType))
     {
         throw new ArgumentException("sourceType must be subtype of PropertyDefinitionConstraint", "sourceType");
     }
     if (validatorCreator == null)
     {
         throw new ArgumentNullException("validatorCreator");
     }
     this.SourceType       = sourceType;
     this.ValidatorCreator = validatorCreator;
 }
 public ValidatorInfo[] ValidatorsFromPropertyDefinition(ProviderPropertyDefinition propertyDefinition)
 {
     if (propertyDefinition != null)
     {
         List <ValidatorInfo> list = new List <ValidatorInfo>();
         foreach (PropertyDefinitionConstraint propertyDefinitionConstraint in propertyDefinition.AllConstraints)
         {
             IPropertyConstraintValidatorCreator[] validatorCreators = this.GetValidatorCreators(propertyDefinitionConstraint.GetType());
             IPropertyConstraintValidatorCreator[] array             = validatorCreators;
             for (int i = 0; i < array.Length; i++)
             {
                 IPropertyConstraintValidatorCreator propertyConstraintValidatorCreator = array[i];
                 ValidatorInfo validator = propertyConstraintValidatorCreator.Create(propertyDefinition, propertyDefinitionConstraint);
                 if (validator != null)
                 {
                     if (!list.Any((ValidatorInfo c) => c.Type == validator.Type))
                     {
                         if (propertyDefinition.IsMultivalued && !(propertyDefinitionConstraint is CollectionPropertyDefinitionConstraint))
                         {
                             list.Add(new CollectionItemValidatorInfo
                             {
                                 ItemValidator = validator
                             });
                         }
                         else
                         {
                             list.Add(validator);
                         }
                     }
                 }
             }
         }
         return(list.ToArray());
     }
     return(new ValidatorInfo[0]);
 }
 public void RegisterMapping(Type sourceType, IPropertyConstraintValidatorCreator validatorCreator)
 {
     this.RegisterMapping(new PropertyConstraintValidatorMapping(sourceType, validatorCreator));
 }