private static Validator CreateValidatorFromConfiguration(Type targetType, string ruleset, IConfigurationSource configurationSource, bool cacheValidator) { if (null == ruleset) { throw new ArgumentNullException("ruleset"); } if (null == configurationSource) { throw new ArgumentNullException("configurationSource"); } Validator wrapperValidator = null; if (cacheValidator) { lock (defaultConfigurationOnlyValidatorsCacheLock) { ValidatorCacheKey key = new ValidatorCacheKey(targetType, ruleset, true); Validator cachedValidator; if (defaultConfigurationOnlyValidatorsCache.TryGetValue(key, out cachedValidator)) { return(cachedValidator); } Validator validator = InnerCreateValidatorFromConfiguration(targetType, ruleset, configurationSource); wrapperValidator = WrapAndInstrumentValidator(validator, configurationSource); defaultConfigurationOnlyValidatorsCache[key] = wrapperValidator; } } else { Validator validator = InnerCreateValidatorFromConfiguration(targetType, ruleset, configurationSource); wrapperValidator = WrapAndInstrumentValidator(validator, configurationSource); } return(wrapperValidator); }