/// <summary> /// Builds the expression. /// </summary> /// <param name="param">The rule.</param> /// <param name="typeParameterExpressions">The type parameter expressions.</param> /// <param name="ruleInputExp">The rule input exp.</param> /// <returns></returns> /// <exception cref="InvalidOperationException"></exception> private Expression BuildExpression(LocalParam param, IEnumerable <ParameterExpression> typeParameterExpressions, ParameterExpression ruleInputExp) { var ruleExpressionBuilder = _expressionBuilderFactory.RuleGetExpressionBuilder(RuleExpressionType.LambdaExpression); var expression = ruleExpressionBuilder.BuildExpressionForRuleParam(param, typeParameterExpressions, ruleInputExp); return(expression); }
/// <summary> /// Builds the expression. /// </summary> /// <param name="rule">The rule.</param> /// <param name="typeParameterExpressions">The type parameter expressions.</param> /// <param name="ruleInputExp">The rule input exp.</param> /// <returns></returns> /// <exception cref="InvalidOperationException"></exception> private RuleFunc <RuleResultTree> BuildExpression(Rule rule, IEnumerable <ParameterExpression> typeParameterExpressions, RuleParameter[] ruleParams) { if (!rule.RuleExpressionType.HasValue) { throw new InvalidOperationException($"RuleExpressionType can not be null for leaf level expressions."); } var ruleExpressionBuilder = _expressionBuilderFactory.RuleGetExpressionBuilder(rule.RuleExpressionType.Value); var expression = ruleExpressionBuilder.BuildExpressionForRule(rule, typeParameterExpressions); return(expression); }
/// <summary> /// Builds the expression. /// </summary> /// <param name="rule">The rule.</param> /// <param name="typeParameterExpressions">The type parameter expressions.</param> /// <param name="ruleInputExp">The rule input exp.</param> /// <returns></returns> /// <exception cref="InvalidOperationException"></exception> private RuleFunc <RuleResultTree> BuildRuleFunc(Rule rule, RuleParameter[] ruleParams) { if (!rule.RuleExpressionType.HasValue) { throw new InvalidOperationException($"RuleExpressionType can not be null for leaf level expressions."); } var ruleExpressionBuilder = _expressionBuilderFactory.RuleGetExpressionBuilder(rule.RuleExpressionType.Value); var ruleFunc = ruleExpressionBuilder.BuildDelegateForRule(rule, ruleParams); return(ruleFunc); }
private RuleExpressionBuilderBase GetExpressionBuilder(RuleExpressionType expressionType) { return(_expressionBuilderFactory.RuleGetExpressionBuilder(expressionType)); }