コード例 #1
0
        public static Expression <Func <TResult> > ApplyParameter <TParameter0, TResult>(this Expression <Func <TParameter0, TResult> > func, TParameter0 parameter0Value)
        {
            var body = new ReplaceParameterVisitor(new Dictionary <ParameterExpression, Expression>()
            {
                { func.Parameters[0], Expression.Constant(parameter0Value, func.Parameters[0].Type) }
            }).Visit(func.Body);

            // ReSharper disable once AssignNullToNotNullAttribute
            return(Expression.Lambda <Func <TResult> >(body));
        }
コード例 #2
0
        public static LambdaExpression ApplyParameters(this LambdaExpression lambdaExpression, object[] parameterValues)
        {
            Dictionary <ParameterExpression, Expression> replacements = new Dictionary <ParameterExpression, Expression>();

            for (var index = 0; index < parameterValues.Length; index++)
            {
                object parameterValue = parameterValues[index];
                replacements.Add(lambdaExpression.Parameters[index], Expression.Constant(parameterValue, lambdaExpression.Parameters[index].Type));
            }

            var body = new ReplaceParameterVisitor(replacements).Visit(lambdaExpression.Body);

            return(Expression.Lambda(body));
        }