如何创建Expression.Lambda <action <controller>&gt;?类型的lambda表达式?动态</动作<控制器>

时间:2012-10-14 15:00:56

标签: c# asp.net-mvc lambda expression-trees

我正在尝试动态创建Expression.Lambda<Action<Controller>>类型的lambda表达式。

例如:x => x.Index()

var body = ???
Expression<Action<Controller>> action = Expression.Lambda<Action<Controller>>(body);

我有控制器类型(Type)和控制器动作(MemberInfo)。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您可以使用Expression.Call()进行操作。类似的东西:

Expression<Action<T>> CreateCallExpression<T>(MethodInfo method)
{
    var parameter = Expression.Parameter(typeof(T), "x");
    return Expression.Lambda<Action<T>>(
        Expression.Call(parameter, method), parameter);
}