简体   繁体   English

如何创建类型为Expression.Lambda的Lambda表达式 <Action<Controller> &gt;? 动态地

[英]How do I create a lambda expression of type Expression.Lambda<Action<Controller>>? dynamically

I am trying to create a lambda expression of type Expression.Lambda<Action<Controller>> dynamically. 我正在尝试动态创建类型为Expression.Lambda<Action<Controller>>的lambda表达式。

For instance: x => x.Index() 例如: x => x.Index()

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

I have the controller type (Type) and the controller action (MemberInfo). 我有控制器类型(类型)和控制器动作(MemberInfo)。

If I understand your question correctly, you would do it using Expression.Call() . 如果我正确理解了您的问题,则可以使用Expression.Call() Something like: 就像是:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM