示例#1
0
 public Rule AddRule(Rule rule)
 {
   if (String.IsNullOrWhiteSpace(rule.Id))
     rule.Id = this.SystemName + "_" + Rules.Count.ToString();
   Rules.Add(rule);
   return rule;
 }
示例#2
0
 public static Boolean CheckRuleIsValid(Rule ruleToEval, ObjectInstance oi, out RuleViolation violatedRule)
 {
   try
   {
     if (CheckCondition(ruleToEval.Condition, oi))
     {
       if (ruleToEval.Assertion(oi) != true)
       {
         violatedRule = new RuleViolation(ruleToEval, oi);
         return false;
       }
       else
       {
         violatedRule = null;
         return true;
       }
     }
     violatedRule = null;
     return true;
   }
   catch(Exception ex)
   {
     violatedRule = new RuleViolationFromException(ruleToEval, oi, ex);
     return false;
   }
 }
示例#3
0
 internal RuleViolation(Rule appliedRule, ObjectInstance oi)
 {
   AppliedRule = appliedRule;
   InvalidObject = oi;
 }
示例#4
0
 public RuleViolationFromException(Rule appliedRule, ObjectInstance oi, Exception ex) : base(appliedRule, oi)
 {
   CaughtException = ex;
 }