コード例 #1
0
        private async Task <IEnumerable <Rule> > ProcessChainAsync <T>(T t, IEnumerable <Rule> rules)
        {
            var notMatchedRules = new List <Rule>();
            var currentRule     = rules.First();

            do
            {
                var match = await currentRule.MatchAsync(t);

                if (match == false)
                {
                    FailedRules.Add(currentRule);
                    notMatchedRules.Add(currentRule);

                    if (_processAllRules == false)
                    {
                        break;
                    }
                }
                else
                {
                    PassedRules.Add(currentRule);
                }

                currentRule = currentRule.Successor;
            } while (currentRule != null);


            return(notMatchedRules);
        }
コード例 #2
0
        private void Reset()
        {
            foreach (var rule in Rules)
            {
                rule.SetSuccessor(null);
            }

            DisabledRules.Clear();
            FailedRules.Clear();
            PassedRules.Clear();
        }
コード例 #3
0
 /// <summary>
 /// Adds a failed rule message that does not have access to a full IValidationRule or IValidationResult
 /// </summary>
 /// <param name="resultMessageWithNoValidationRule"></param>
 public void RuleFailed(string resultMessageWithNoValidationRule)
 {
     FailedRules.Add(new ValidationResult(resultMessageWithNoValidationRule));
 }
コード例 #4
0
 /// <summary>
 /// Adds to failed rules from a valid IValidationRule or IValidationResult
 /// </summary>
 /// <param name="validatable"></param>
 public void RuleFailed(ValidationResult validatable)
 {
     FailedRules.Add(validatable);
 }