/// <summary>Adds the MultiProperty RuleMethod to the list of rules to be enforced.</summary> /// <param name="pMethod">The MultiProperty RuleMethod that implements the rule.</param> /// <returns>The added MultiPropertyRuleMethod.</returns> /// <remarks> /// Adds the rule as many times as their are properties in the MultiPropertyRule. /// </remarks> public MultiPropertyRuleMethod Add(MultiPropertyRuleMethod pMethod) { string[] propertyNames = pMethod.PropertyNames; foreach (string propertyName in propertyNames) { AddX(propertyName, pMethod); } return(pMethod); }
/// <summary>Check MultiPropertyRuleMethod and adjust BrokenRules accordingly.</summary> /// <param name="pRule">The MultiPropertyRuleMethod to check.</param> /// <param name="pPreviousMultiPropertyRules">MultiPropertyRules that have been validated previously in this rule checking pass.</param> /// <remarks>MultiPropertyRules translate to two or more BrokenRules. /// <para>This overload makes sure we haven't validated this rule before during this iteration of object checking. /// It skips the rule if its been checked before; else checks it and adds to the list of rules previously checked.</para> /// </remarks> private void CheckMultiPropertyRuleX(MultiPropertyRuleMethod pRule, List <MultiPropertyRuleMethod> pPreviousMultiPropertyRules) { if (pPreviousMultiPropertyRules.Contains(pRule)) { return; } CheckMultiPropertyRuleX(pRule); pPreviousMultiPropertyRules.Add(pRule); }
/// <summary>Check MultiPropertyRuleMethod and adjust BrokenRules accordingly.</summary> /// <param name="pRule">The MultiPropertyRuleMethod to check.</param> /// <remarks>MultiPropertyRules translate to two or more BrokenRules.</remarks> private void CheckMultiPropertyRuleX(MultiPropertyRuleMethod pRule) { bool passed = pRule.Invoke(mTarget); BrokenRulesX.RemoveGroup(pRule.GroupRuleName); if (passed) { return; } AddBrokenRulesForMultiPropertyRule(pRule); }
/// <summary>Add BrokenRule for each property in the MultiPropertyRuleMethod.</summary> /// <param name="pRule">The broken MultiProperty Rule.</param> private void AddBrokenRulesForMultiPropertyRule(MultiPropertyRuleMethod pRule) { string groupRuleName = pRule.GroupRuleName; string baseRuleName = groupRuleName + "!"; string description = pRule.RuleArgs.Description; foreach (string propertyName in pRule.PropertyNames) { string ruleName = baseRuleName + propertyName; BrokenRule broken = new BrokenRule(ruleName, description, propertyName, groupRuleName); BrokenRulesX.Add(broken); } }