Example #1
0
        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);
        }