Expression.Call 嵌套函数

Expression.Call nested functions

我有一个像这样的嵌套函数:Func<A, Func<B, C>>

我正在尝试构建一个表达式树,它能够:

我似乎 运行 遇到的问题是 Expression.Call 需要提前提供目标和方法信息,但这是未知的(或者我不知道如何获取)直到 func 从第一次调用返回。

一定有办法做到这一点,但到目前为止我在第一次调用后就卡住了。

实际上我自己设法解决了这个问题,这最终成为我知识上的一个空白。

答案是,因为Func<_>是委托,所以可以使用Expression.Invoke代替Expression.Call,而且Expression.Invoke支持对表达式值进行操作,而不是需要预先提供目标和方法信息。