是否有一个库可以将方法反编译为表达式树,并支持 CLR 4.0?

2023-12-14

前面的问题询问是否可以将编译的委托转换为表达式树,例如:

  • 将 .net Func 转换为 .net Expression>

当时理智的答案是:

  • 这是可能的,但非常困难,而且没有标准库解决方案。
  • 使用反光镜!

但幸运的是,有一些非常疯狂/非常伟大的人喜欢逆向工程,他们让我们其他人的困难事情变得容易。

显然,可以将 IL 反编译为 C#,就像 Reflector 所做的那样,因此您可以原则相反,目标是支持所有语句类型的 CLR 4.0 表达式树。这很有趣,因为编译器是否内置特殊支持并不重要Expression<>lambda 从未扩展为支持在编译器中构建语句表达式树。图书馆解决方案可以填补这一空白。然后,我们将有一个高级起点来编写类似方面的代码操作,而不必弄乱原始 IL。

正如上述链接问题的答案中所指出的,有一些有希望的迹象但我还没有成功地通过搜索发现是否有很大进展。

那么有人完成了这项工作,或者已经取得了很大的进展吗?

Note:CLR 4.0 现已发布。是时候再看一看了。


我做了一个支持 .NET 3.5 表达式树的库:
https://github.com/ashmind/expressive

我尝试做内部 API,这样添加 .NET 4.0 支持就不那么困难了。
您可以添加或更改 IPipeline 实现中的步骤来实现这一目标。

不过,我还没有做过而且很难的一件事是对循环的支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有一个库可以将方法反编译为表达式树,并支持 CLR 4.0? 的相关文章

随机推荐

  • 带有函数应用的类型化抽象语法树

    我正在尝试编写一个可以表示的类型化抽象语法树数据类型 功能应用 到目前为止我已经 type Expr lt a gt Constant of a Application of Expr lt b gt a gt Expr lt b gt e
  • Appcompat actionbar v21 应用程序图标未显示

    出于材料设计目的 我升级到了 avtionbar app compat v21 但我观察到 与旧的应用程序兼容库相比 它在操作栏中不显示应用程序图标 导航菜单和后退按钮占用了更多空间 有人遇到过这个问题吗 我搜索了很多 但没有发现任何有用的
  • 无法使用 FastAPI 访问或打印任何请求数据

    我有一个简单的 FastAPI 端点 我想在其中接收字符串值 在本例中 我尝试使用 JSON 正文 但基本上不需要是 JSON 我真的只需要一个简单的字符串来将请求彼此分开 不幸的是 我无法使用以下命令访问任何请求参数GET方法 我也尝试过
  • 如何将 Excel 电子表格配置为 javax.sql.DataSource?

    我有一个 Spring Boot 1 3 0 Java 8 应用程序 需要使用 Excel 作为数据源 由于 Excel 文件类型的原因 POI 和 JXL 不起作用 应用程序需要在 unix 环境中运行 我将应用程序配置为通过 yml 文
  • 在 web.config 中保留敏感信息

    将用户名或密码存储在中是否安全web config作为其他参数 例如超时时间在ASP NET MVC应用程序 如果不是 是否可以使这些参数变得安全 以便它们不能被编码在web config文件在发布的服务器上 另一方面 您是否建议将用户名
  • 将 ImageView 保存到 Android 模拟器库

    我想将图像保存到 Android Gallery 这是我当前的代码 image setDrawingCacheEnabled true image buildDrawingCache true Bitmap b image getDrawi
  • 必须声明标量变量

    首先 我创建了一个包含一列的内存表 并使用这些列值与另一个表进行内部联接 这样做时我收到此错误 必须声明标量变量 暂时的 谁能解释一下我哪里出了问题 DECLARE ID INT Declare Temporary Table Accoun
  • fortran 代码中 Rectilinear_grid 的二进制 vtk 无法通过 paraview [重复]

    这个问题在这里已经有答案了 我使用了 stackoverflow 发布的代码并将其修改为 program VTKBinary implicit none real 4 x 2 0 1 real 4 y 2 0 1 real 4 z 2 0
  • 如何在R中通过ID计算日期之间的平均差异

    我有如下数据集 我想计算每个唯一 id 的平均时间差 data membership id created date 1 12000000 2015 01 20 2 12000001 2012 11 19 3 12000001 2013 1
  • Redisearch合计返回每组前5名

    假设我有以下格式的文档 product name TEXT tags TAG score NUMERIC product1 tag1 tag2 tag3 10 product2 tag2 tag3 tag4 100 我想要一个查询按照产品得
  • 错误会话:创建池到 /127.0.0.1:9042 时出错

    当我遇到此错误时 我尝试在 cassandra 中插入值 15 08 14 10 21 54 INFO Cluster New Cassandra host a b c d 9042 added 15 08 14 10 21 54 INFO
  • 在 Git 中获取从 master 到分支的更改

    在我的存储库中 我有一个名为aq我正在努力 然后我提交了新的工作和错误master 将这些提交纳入其中的最佳方法是什么aq分支 创建另一个新分支master并将其与aq 查看aq分支 并从master git checkout aq git
  • 传递给 C++ 函数的数组给出不同的长度

    我想说首先 我对导致这个问题的 幕后 发生的事情感兴趣 就像我对代码的盲目修复一样感兴趣 也许 C 标准或我不熟悉的东西决定了导致它的原因 无论如何 我试图传递 3 个数组 A B C到一个函数中 它将合并A and B 将结果存储在C 函
  • 雪花:选择带双引号的“COLUMN”

    我有一位客户 他们的 Snowflake 实例要求列名称带有双引号 示例 从 lk category 中选择 类别名称 有谁知道如何关闭此功能 雪花文档确实解释了一些关于标识符的内容 关键是带引号的标识符必须严格按照它们的定义来引用 因此
  • NetLogo:有没有办法自定义导出图生成的 CSV 文件以仅包含某些列?

    这可能看起来非常基本 但是使用 NetLogo 的导出绘图功能 我得到的是这样的 x y color pen down x y color pen down x y color pen down x y color pen down 有没有
  • Spring Boot在验证@PathVariable参数时如何返回自定义错误消息

    是否可以向路径变量添加一些自定义验证消息 我有一些 GET GetMapping v2 tw id public TwDto getTw Authentication auth PathVariable Long id 的情况下 v2 tw
  • 这两个 LINQ 查询可以互换使用吗?

    a 以下两个查询会产生相同的结果吗 var query1 collection 1 SelectMany c 1 gt c 1 collection 2 SelectMany c 2 gt c 2 collection 3 Select c
  • MySql分页结果,查找特定结果的“页面”

    我有一个使用 MySql 数据库的应用程序 它显示分页的记录列表 用户可以向其中添加新记录 我知道如何使用 LIMIT 等获取分页结果 但问题是添加新记录时如何转到特定页面 如果页面大小为 20 并且用户正在查看第一页 并且他们添加了第 2
  • FFT 卷积 - 3x3 内核

    我编写了一些例程来使用 3x3 内核锐化灰度图像 1 1 1 1 9 1 1 1 1 以下代码在非 FFT 空域 卷积中运行良好 但在基于 FFT 频域 卷积中不起作用 输出图像似乎模糊 我有几个问题 1 该例程无法生成所需的结果 它还会冻
  • 是否有一个库可以将方法反编译为表达式树,并支持 CLR 4.0?

    前面的问题询问是否可以将编译的委托转换为表达式树 例如 将 net Func 转换为 net Expression gt 当时理智的答案是 这是可能的 但非常困难 而且没有标准库解决方案 使用反光镜 但幸运的是 有一些非常疯狂 非常伟大的人