Ejemplo n.º 1
0
 void InvokeRuleDelegate(IContext resultContext, IRule resultRule, FailedConditionsInvokedDelegate failedResultInvocation)
 {
     if (failedResultInvocation != null)
     {
         failedResultInvocation(resultContext, resultRule);
     }
 }
Ejemplo n.º 2
0
        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;
            });
        }
Ejemplo n.º 3
0
        public IRuleValidation SetCondition(IBooleanBase condition,
                                            SuccessfulConditionsInvokedDelegate successfulResultInvocation,
                                            FailedConditionsInvokedDelegate failedResultInvocation)
        {
            _condition = condition;
            _successfulResultInvocation = successfulResultInvocation;
            _failedResultInvocation     = failedResultInvocation;

            return(this);
        }