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); }
private void Reset() { foreach (var rule in Rules) { rule.SetSuccessor(null); } DisabledRules.Clear(); FailedRules.Clear(); PassedRules.Clear(); }
/// <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)); }
/// <summary> /// Adds to failed rules from a valid IValidationRule or IValidationResult /// </summary> /// <param name="validatable"></param> public void RuleFailed(ValidationResult validatable) { FailedRules.Add(validatable); }