public void ConfigureRule(IExecutable rule) { if (this.XMLConfig.RuleConfigurations == null) { return; } var ruleName = rule.IsSQLRule() ? rule.Name : rule.GetType().ToString(); var ruleConfig = this.XMLConfig.RuleConfigurations.Where(r => r.Name == ruleName).FirstOrDefault(); if (ruleConfig == null) //No rule configuration in config file for the specified rule { return; } foreach (IProperty property in rule.GetProperties()) { //Find matching property from config file RuleProperty ruleProperty = ruleConfig.Properties.Where(p => p.Name == property.Name).FirstOrDefault(); if (ruleProperty != null) { if (property.isValidPropertyValue(ruleProperty.Value)) { property.SetValue(ruleProperty.Value); } } } }
public RuleConfiguration(IExecutable rule, bool runRule) { this.Name = rule.IsSQLRule() ? rule.Name : rule.GetType().ToString(); this.RunRule = runRule; //Add properties this.Properties = new List <RuleProperty>(); foreach (IProperty property in rule.GetProperties()) { this.Properties.Add(new RuleProperty(property)); } }
public bool RunRule(IExecutable rule) { if (this.XMLConfig.RuleConfigurations != null) { //Rule names in config file are types names for normal rules, but friendly-name for SQL rules var ruleName = rule.IsSQLRule() ? rule.Name : rule.GetType().ToString(); return(this.XMLConfig.RuleConfigurations.Any(c => c.RunRule == true && c.Name == ruleName)); } else { return(false); } }