//private readonly ILogger<RulesLoader> _logger; #endregion Fields #region Methods public async Task <RulesCache> LoadRulesOnStartUp(ICollection <RulesModuleModel> modules) { try { return(await Task.Run ( () => modules.Aggregate(new RulesCache(new Dictionary <string, RuleEngine>(), new Dictionary <string, string>()), (cache, module) => { string moduleName = module.Name.ToLowerInvariant(); RuleSet ruleSet = module.DeserializeRuleSetFile(); if (ruleSet == null) { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.invalidRulesetFormat, moduleName)); } cache.RuleEngines.Add(moduleName, new RuleEngine(ruleSet, RulesSerializer.GetValidation(ruleSet))); using (IResourceReader reader = new ResourceReader(new MemoryStream(module.ResourceSetFile))) { reader.OfType <DictionaryEntry>() .ToList() .ForEach(entry => cache.ResourceStrings.Add((string)entry.Key, (string)entry.Value)); } return cache; }) )); } catch (Exception ex) { //this._logger.LogError(ex, ex.Message); return(new RulesCache(new Dictionary <string, RuleEngine>(), new Dictionary <string, string>())); } }
public void LoadRules(RulesModuleModel module, RulesCache cache) { string moduleName = module.Name.ToLowerInvariant(); RuleSet ruleSet = module.DeserializeRuleSetFile(); if (ruleSet == null) { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.invalidRulesetFormat, moduleName)); } cache.RuleEngines.Add(moduleName, new RuleEngine(ruleSet, RulesSerializer.GetValidation(ruleSet))); using (IResourceReader reader = new ResourceReader(new MemoryStream(module.ResourceSetFile))) { reader.OfType <DictionaryEntry>() .ToList() .ForEach(entry => cache.ResourceStrings.Add((string)entry.Key, (string)entry.Value)); } }