/// <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 for rule parameter.</summary> /// <param name="param">The parameter.</param> /// <param name="typeParamExpressions">The type parameter expressions.</param> /// <param name="ruleInputExp">The rule input exp.</param> /// <returns>Expression.</returns> internal override Expression BuildExpressionForRuleParam(LocalParam param, IEnumerable <ParameterExpression> typeParamExpressions, ParameterExpression ruleInputExp) { var config = new ParsingConfig { CustomTypeProvider = new CustomTypeProvider(_reSettings.CustomTypes) }; var e = DynamicExpressionParser.ParseLambda(config, typeParamExpressions.ToArray(), null, param.Expression); return(e.Body); }
/// <summary> /// Gets the expression for rule. /// </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> private Func <object[], object> GetDelegateForRuleParam(LocalParam param, RuleParameter[] ruleParameters) { return(_ruleExpressionParser.Compile <object>(param.Expression, ruleParameters)); }
/// <summary> /// Gets the expression for rule. /// </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> private Delegate GetDelegateForRuleParam(LocalParam param, RuleParameter[] ruleParameters) { return(_ruleExpressionParser.Compile(param.Expression, ruleParameters)); }
/// <summary> /// Gets the expression for rule. /// </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> private Expression GetExpressionForRuleParam(LocalParam param, IEnumerable <ParameterExpression> typeParameterExpressions, ParameterExpression ruleInputExp) { return(BuildExpression(param, typeParameterExpressions, ruleInputExp)); }
/// <summary>Builds the expression for rule parameter.</summary> /// <param name="rule">The rule.</param> /// <param name="typeParamExpressions">The type parameter expressions.</param> /// <param name="ruleInputExp">The rule input exp.</param> /// <returns>Expression.</returns> internal abstract Expression BuildExpressionForRuleParam(LocalParam rule, IEnumerable <ParameterExpression> typeParamExpressions, ParameterExpression ruleInputExp);