/// <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);
        }
Example #4
0
 private RuleExpressionBuilderBase GetExpressionBuilder(RuleExpressionType expressionType)
 {
     return(_expressionBuilderFactory.RuleGetExpressionBuilder(expressionType));
 }