我正在尝试Expression.Lambda<Action<Controller>>
动态创建类型的 lambda 表达式。
例如:x => x.Index()
var body = ???
Expression<Action<Controller>> action = Expression.Lambda<Action<Controller>>(body);
我有控制器类型 (Type) 和控制器操作 (MemberInfo)。
我正在尝试Expression.Lambda<Action<Controller>>
动态创建类型的 lambda 表达式。
例如:x => x.Index()
var body = ???
Expression<Action<Controller>> action = Expression.Lambda<Action<Controller>>(body);
我有控制器类型 (Type) 和控制器操作 (MemberInfo)。
如果我正确理解您的问题,您将使用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);
}