public ICFamilyRulesConfig GetEffectiveRulesConfig(string languageKey, ICFamilyRulesConfig defaultRulesConfig, UserSettings userSettings) { if (defaultRulesConfig == null) { throw new ArgumentNullException(nameof(defaultRulesConfig)); } // Optimisation - if there are no user-specified rules settings then just return the default if ((userSettings?.Rules?.Count ?? 0) == 0) { logger.WriteLine(CoreStrings.EffectiveRules_NoUserSettings); return(defaultRulesConfig); } var effectiveConfig = configCache.FindConfig(languageKey, defaultRulesConfig, userSettings); if (effectiveConfig != null) { logger.WriteLine(CoreStrings.EffectiveRules_CacheHit); } else { logger.WriteLine(CoreStrings.EffectiveRules_CacheMiss); effectiveConfig = new DynamicCFamilyRulesConfig(defaultRulesConfig, userSettings); configCache.Add(languageKey, defaultRulesConfig, userSettings, effectiveConfig); } return(effectiveConfig); }
public ICFamilyRulesConfig GetEffectiveRulesConfig(string languageKey, ICFamilyRulesConfig defaultRulesConfig, RulesSettings customSettings) { if (languageKey == null) { throw new ArgumentNullException(nameof(languageKey)); } if (defaultRulesConfig == null) { throw new ArgumentNullException(nameof(defaultRulesConfig)); } if (customSettings == null) { throw new ArgumentNullException(nameof(customSettings)); } var effectiveConfig = configCache.FindConfig(languageKey, defaultRulesConfig, customSettings); if (effectiveConfig != null) { logger.WriteLine(CoreStrings.EffectiveRules_CacheHit); return(effectiveConfig); } logger.WriteLine(CoreStrings.EffectiveRules_CacheMiss); effectiveConfig = new DynamicCFamilyRulesConfig(defaultRulesConfig, customSettings, logger); configCache.Add(languageKey, defaultRulesConfig, customSettings, effectiveConfig); return(effectiveConfig); }