void InvokeRuleDelegate(IContext resultContext, IRule resultRule, FailedConditionsInvokedDelegate failedResultInvocation) { if (failedResultInvocation != null) { failedResultInvocation(resultContext, resultRule); } }
public void InvokeMatchingRules(IContext context, SuccessfulConditionsInvokedDelegate additionalSuccessfulResultInvocation, FailedConditionsInvokedDelegate additionalFailedResultInvocation) { List <IRule> matchingRules = (List <IRule>)GetMatchingRules(context); if (!matchingRules.Any()) { return; } matchingRules.ForEach(rule => { SuccessfulConditionsInvokedDelegate originalSuccessfulResultInvocation = rule.SuccessfulResultInvocation; FailedConditionsInvokedDelegate originalFailedResultInvocation = rule.FailedResultInvocation; rule.SuccessfulResultInvocation = (resultContext, resultRule) => { InvokeRuleDelegate(resultContext, resultRule, originalSuccessfulResultInvocation); InvokeRuleDelegate(resultContext, resultRule, additionalSuccessfulResultInvocation); }; rule.FailedResultInvocation = (resultContext, resultRule) => { InvokeRuleDelegate(resultContext, resultRule, originalFailedResultInvocation); InvokeRuleDelegate(resultContext, resultRule, additionalFailedResultInvocation); }; rule.Validate(context); //Revert to original delegates rule.SuccessfulResultInvocation = originalSuccessfulResultInvocation; rule.FailedResultInvocation = originalFailedResultInvocation; }); }
public IRuleValidation SetCondition(IBooleanBase condition, SuccessfulConditionsInvokedDelegate successfulResultInvocation, FailedConditionsInvokedDelegate failedResultInvocation) { _condition = condition; _successfulResultInvocation = successfulResultInvocation; _failedResultInvocation = failedResultInvocation; return(this); }