public virtual bool TryEvaluate(out RuleOutcome outcome) { outcome = null; try { outcome = Evaluate(); return(true); } catch (Exception ex) { return(false); } }
public virtual bool TryEvaluate(out RuleOutcome outcome){ outcome = null; try { outcome = Evaluate(); return true; } catch (Exception ex){ return false; } }
public virtual RuleOutcome EvaluateRuleSet(RuleScope scope, bool includeGlobalScope = true, Func <Rule, RuleScope, bool> scopeEvaluator = null) { List <Rule> rules = GetRulesByScope(scope, includeGlobalScope, scopeEvaluator); if (rules != null && rules.Count > 0) { foreach (var rule in rules) { RuleOutcome outcome = rule.Evaluate(); if (!outcome.IsAllowed) { //rule pipeline failed :( return(outcome); } } } return(RuleOutcome.Allowed); }
public virtual RuleOutcome EvaluateRuleSet(T context, RuleScope[] ruleScopes, bool includeGlobalScope = true, Func <Rule, RuleScope, bool> scopeEvaluator = null) { foreach (var scope in ruleScopes) { IEnumerable <Rule> rules = GetRulesByScope(scope, includeGlobalScope, scopeEvaluator); if (rules != null && rules.Any()) { foreach (var rule in rules) { Debug.WriteLine(String.Format("Rule: {0}: {1} ({2} - {3})", rule.Name, rule.Number, scope.ToString(), typeof(Rule).Name)); RuleOutcome outcome = ((Rule <T>)rule).Evaluate(context); if (!outcome.IsAllowed) { //rule pipeline failed :( return(outcome); } } } } return(RuleOutcome.Allowed); }