public static List <RuleInformation> GetDescriptions(Assembly discoverAssembly) { lock (typeof(RuleDiscoveryProvider)){ string cacheKey = discoverAssembly.FullName; if (!_descriptions.ContainsKey(cacheKey)) { _descriptions[cacheKey] = new List <RuleInformation>(); var rules = DiscoverRules(new Assembly[] { discoverAssembly }); foreach (var rulepair in rules) { if (!rulepair.Item2.Enabled) { continue; } RuleInformation info = new RuleInformation(); info.Description = rulepair.Item2.Description; info.PsuedoLogic = rulepair.Item2.PsuedoLogic; Rule rule = null; try { rule = RulesEngine <RuleContext> .ConstructRule(rulepair.Item1); } catch { } if (rule != null) { info.Name = rule.Name; info.Number = rule.Number; info.Scope = rule.Scope; } else { info.Name = "RuleLoadingError"; info.Number = "0.0"; info.Scope = RuleScope.Global; } _descriptions[cacheKey].Add(info); } _descriptions[cacheKey] = _descriptions[cacheKey].OrderBy(x => x.Number).ToList(); } return(_descriptions[cacheKey]); } }
public static RuleInformation Map(Tuple <Type, RuleDiscoveryAttribute> discoveredRule) { RuleInformation info = new RuleInformation(); if (discoveredRule != null) { info.Description = discoveredRule.Item2.Description; info.PsuedoLogic = discoveredRule.Item2.PsuedoLogic; info.Enabled = discoveredRule.Item2.Enabled; } Rule rule = RulesEngine <RequestContext> .ConstructRule(discoveredRule.Item1, false); info.Rule = rule; //if (rule != null) //{ // info.Name = rule.Name; // info.Number = rule.Number; // info.Scope = rule.Scope; //} return(info); }