/// <summary> /// Creates the validator for the specified target and ruleset. /// </summary> /// <param name="targetType">The <see cref="Type"/>to validate.</param> /// <param name="ruleset">The ruleset to use when validating</param> /// <param name="mainValidatorFactory">Factory to use when building nested validators.</param> /// <returns>A <see cref="Validator"/></returns> protected internal override Validator InnerCreateValidator(Type targetType, string ruleset, ValidatorFactory mainValidatorFactory) { ConfigurationValidatorBuilder builder = new ConfigurationValidatorBuilder( ValidationSettings.TryGet(ConfigurationSource), MemberAccessValidatorBuilderFactory.Default, mainValidatorFactory); return builder.CreateValidator(targetType, ruleset); }
/// <summary> /// Creates the validator for the specified target and ruleset. /// </summary> /// <param name="targetType">The <see cref="Type"/>to validate.</param> /// <param name="ruleset">The ruleset to use when validating</param> /// <param name="mainValidatorFactory">Factory to use when building nested validators.</param> /// <returns>A <see cref="Validator"/></returns> protected internal override Validator InnerCreateValidator(Type targetType, string ruleset, ValidatorFactory mainValidatorFactory) { ConfigurationValidatorBuilder builder = new ConfigurationValidatorBuilder( ValidationSettings.TryGet(ConfigurationSource), MemberAccessValidatorBuilderFactory.Default, mainValidatorFactory); return(builder.CreateValidator(targetType, ruleset)); }
/// <summary> /// /// </summary> /// <param name="type"></param> /// <param name="propertyInfo"></param> /// <param name="ruleset"></param> /// <param name="memberAccessValidatorBuilderFactory"></param> /// <returns></returns> public static Validator GetPropertyValidatorFromConfiguration( Type type, PropertyInfo propertyInfo, string ruleset, MemberAccessValidatorBuilderFactory memberAccessValidatorBuilderFactory) { Validator validator = null; lock (defaultConfigurationOnlyPropertyValidatorsCache) { PropertyValidatorCacheKey key = new PropertyValidatorCacheKey(type, propertyInfo.Name, ruleset); if (!defaultConfigurationOnlyPropertyValidatorsCache.TryGetValue(key, out validator)) { using (var configurationSource = ConfigurationSourceFactory.Create()) { ConfigurationValidatorBuilder builder = ConfigurationValidatorBuilder.FromConfiguration( configurationSource, memberAccessValidatorBuilderFactory, ValidationFactory.DefaultCompositeValidatorFactory); ValidatedPropertyReference propertyReference = GetValidatedPropertyReference(type, ruleset, propertyInfo.Name, configurationSource); if (null == propertyReference) { validator = null; } else { validator = builder.CreateValidatorForProperty(type, propertyReference); } defaultConfigurationOnlyPropertyValidatorsCache[key] = validator; } } } return(validator); }