public static RuleExpressionResult Evaluate(RuleExecution execution, CodeExpression expression) { if (execution == null) { throw new ArgumentNullException("execution"); } RuleExpressionInternal ruleExpr = GetExpression(expression); return(ruleExpr.Evaluate(expression, execution)); }
public static void AnalyzeUsage(RuleAnalysis analysis, CodeExpression expression, bool isRead, bool isWritten, RulePathQualifier qualifier) { if (analysis == null) { throw new ArgumentNullException("analysis"); } RuleExpressionInternal ruleExpr = GetExpression(expression); ruleExpr.AnalyzeUsage(expression, analysis, isRead, isWritten, qualifier); }
public static RuleExpressionInfo Validate(RuleValidation validation, CodeExpression expression, bool isWritten) { if (validation == null) { throw new ArgumentNullException("validation"); } // See if we've visited this node before. // Always check if written = true RuleExpressionInfo resultExprInfo = null; if (!isWritten) { resultExprInfo = validation.ExpressionInfo(expression); } if (resultExprInfo == null) { // First time we've seen this node. RuleExpressionInternal ruleExpr = GetExpression(expression); if (ruleExpr == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.CodeExpressionNotHandled, expression.GetType().FullName); ValidationError error = new ValidationError(message, ErrorNumbers.Error_CodeExpressionNotHandled); error.UserData[RuleUserDataKeys.ErrorObject] = expression; if (validation.Errors == null) { string typeName = string.Empty; if ((validation.ThisType != null) && (validation.ThisType.Name != null)) { typeName = validation.ThisType.Name; } string exceptionMessage = string.Format( CultureInfo.CurrentCulture, Messages.ErrorsCollectionMissing, typeName); throw new InvalidOperationException(exceptionMessage); } else { validation.Errors.Add(error); } return(null); } resultExprInfo = validation.ValidateSubexpression(expression, ruleExpr, isWritten); } return(resultExprInfo); }
public static CodeExpression Clone(CodeExpression originalExpression) { if (originalExpression == null) { return(null); } RuleExpressionInternal ruleExpr = GetExpression(originalExpression); CodeExpression newExpr = ruleExpr.Clone(originalExpression); ConditionHelper.CloneUserData(originalExpression, newExpr); return(newExpr); }
public static bool Match(CodeExpression firstExpression, CodeExpression secondExpression) { // If they're both null, they match. if (firstExpression == null && secondExpression == null) { return(true); } // If only one of them is null, there's no match. if (firstExpression == null || secondExpression == null) { return(false); } if (firstExpression.GetType() != secondExpression.GetType()) { return(false); } RuleExpressionInternal ruleExpr1 = GetExpression(firstExpression); return(ruleExpr1.Match(firstExpression, secondExpression)); }
internal TypeWrapperTuple(Type type, RuleExpressionInternal internalExpression) { this.codeDomType = type; this.internalExpression = internalExpression; }
public static void Decompile(StringBuilder stringBuilder, CodeExpression expression, CodeExpression parentExpression) { RuleExpressionInternal ruleExpr = GetExpression(expression); ruleExpr.Decompile(expression, stringBuilder, parentExpression); }