internal override void Execute(RuleExecution execution) { Type leftType = execution.Validation.ExpressionInfo(assignStatement.Left).ExpressionType; Type rightType = execution.Validation.ExpressionInfo(assignStatement.Right).ExpressionType; RuleExpressionResult leftResult = RuleExpressionWalker.Evaluate(execution, assignStatement.Left); RuleExpressionResult rightResult = RuleExpressionWalker.Evaluate(execution, assignStatement.Right); leftResult.Value = Executor.AdjustType(rightType, rightResult.Value, leftType); }
internal static bool EvaluateBool(CodeExpression expression, RuleExecution context) { object result = RuleExpressionWalker.Evaluate(context, expression).Value; if (result is bool) { return((bool)result); } Type expectedType = context.Validation.ExpressionInfo(expression).ExpressionType; if (expectedType == null) { // oops ... not a boolean, so error InvalidOperationException exception = new InvalidOperationException(Messages.ConditionMustBeBoolean); exception.Data[RuleUserDataKeys.ErrorObject] = expression; throw exception; } return((bool)AdjustType(expectedType, result, typeof(bool))); }
internal override void Execute(RuleExecution execution) { RuleExpressionWalker.Evaluate(execution, exprStatement.Expression); }