Return to Snippet

Revision: 15112
at June 24, 2009 12:19 by jmcd


Updated Code
var valueFromSomewhere = "BAR";

Expression<Func<Controller, string, object>> expressionWithArg = (c, s) => c.Action("foo", s);

var methodCallExpression = (MethodCallExpression)expressionWithArg.Body;

var expressionWithoutArg = Expression.Lambda<Func<Controller, object>>(
    Expression.Call(methodCallExpression.Object, methodCallExpression.Method, methodCallExpression.Arguments[0], Expression.Constant(valueFromSomewhere)),
    expressionWithArg.Parameters[0]
    );

Revision: 15111
at June 24, 2009 12:18 by jmcd


Initial Code
Expression<Func<Controller, string, object>> expressionWithArg = (c, s) => c.Action("foo", s);

var methodCallExpression = (MethodCallExpression)expressionWithArg.Body;

var expressionWithoutArg = Expression.Lambda<Func<Controller, object>>(
    Expression.Call(methodCallExpression.Object, methodCallExpression.Method, methodCallExpression.Arguments[0], Expression.Constant(arg)),
    expressionWithArg.Parameters[0]
    );

Initial URL


Initial Description


Initial Title
Narrowing an expression to use a delegate with fewer args

Initial Tags


Initial Language
C#