コード例 #1
0
 /// <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);
 }
コード例 #2
0
 /// <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);
 }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
            }
        }