【问题标题】:Expression.Call nested functionsExpression.Call 嵌套函数
【发布时间】:2019-03-29 12:29:39
【问题描述】:

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

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

  • 调用外部函数
  • 调用返回的函数

我似乎遇到的问题是Expression.Call 需要提前获取目标和方法信息,并且直到 func 从第一个返回时才知道(或者我不知道如何获取它)打电话。

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

【问题讨论】:

  • 有一个接口来包装预期的功能是不行的吗?
  • @Vulpex 我的意思是,我可以,但如果可能的话我想避免它,这必须是可能的,当然?

标签: c# lambda func


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 2018-05-10
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多