将 .NET 表达式树链接到新程序集中

2024-03-13

我正在尝试编写自己的玩具 My Toy Language -> MSIL 编译器,以便更好地了解编译器的工作原理。我的解析和词法分析工作正常,我已经构建了表达式树并使用 System.Linq.Expressions 表达式树 API,我有一个工作解释器。现在我想发出一些真正的 MSIL 程序集。

问题是,我不知道如何实际构建这些程序集。这方法构建器 http://msdn.microsoft.com/en-us/library/system.reflection.emit.methodbuilder.aspx类仅接受原始 MSIL 方法体,因此我必须获取表达式树的原始 MSIL。呼唤表达式.Compile() http://msdn.microsoft.com/en-us/library/bb345362.aspx返回一个工作委托,但我无法获取其底层 MSIL。呼唤MethodInfo.GetMethodBody() http://msdn.microsoft.com/en-us/library/system.reflection.methodbase.getmethodbody.aspx抛出 InvalidOperationException,因为它未在该特定子类中实现。

如何将该代表链接到新程序集中?


刚刚找到了。 LambdaExpression 的 DLR 版本公开了一个 CompileToMethod 方法,该方法正是我所需要的。

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

将 .NET 表达式树链接到新程序集中 的相关文章

  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow
  • .NET EXE 内存占用

    即使是一个简单的Notepad http en wikipedia org wiki Notepad 28software 29C 中的应用程序消耗兆字节的 RAM 如任务管理器中所示 最小化应用程序时 任务管理器中的内存大小会显着下降 并
  • MS Source Server - 使用 srctool 查看时源流显然不存在

    我一直在尝试安装 MS 调试工具中的 MS Source Server 内容 目前 我正在通过 Subversion 索引命令运行我的代码 pdbs 该命令现在按预期运行 它为给定的 pdb 文件创建流并将其写入 pdb 文件 但是 当我在
  • Windows DPAPI - 如何处理熵?

    我正在使用 Windows DPAPI 来加密一些敏感数据 密码存储在注册表中 这一切都运行良好 但我想知道是否有人可以澄清我对 NET 中 可选 提供给 ProtectedData Protect 的 熵 字节的理解 熵 字节数组似乎类似
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • DataTable.GetChanges() 不断返回 NULL

    我正在尝试获取存在于的所有行allData但不在removeData public static DataTable RemoveDuplicateRows DataTable allData DataTable removeData re
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 如何使正则表达式匹配不区分大小写?

    我有以下正则表达式加拿大的邮政编码 http en wikipedia org wiki Postal codes in Canada ABCEGHJKLMNPRSTVXY 1 d 1 A Z 1 d 1 A Z 1 d 1 它工作正常 但
  • 使用 Amazon SQS 的 .net 应用程序示例

    我正在寻找一个示例 Net 应用程序 该应用程序会持续检查 Amazon SQS 是否有新消息 并在发现新消息时执行一项操作并将其从队列中删除 我的目标是让一个在 EC2 上运行的应用程序监视我的 SQS 队列中的新消息 当找到一条消息时
  • 如何在VS2017中从.net项目引用netstandard项目?

    我有一个 netstandard2 0 项目 用于与第三方 Web 服务交互 我需要在同一解决方案中引用旧的 net 4 6 2 项目中的该项目 但是当我这样做时 我会收到一堆关于需要引用我定义的类型的错误 例如 我将调用 netstand
  • ASP.net 出现错误“访问路径被拒绝”。尝试将文件上传到我的 Windows Server 2008 R2 Web 服务器时

    我有一个 ASP NET Web 应用程序 它将文件上传到 Web 服务器上的特定文件夹 本地一切工作正常 但是当我将应用程序部署到 Web 服务器时 我开始收到错误 访问路径 D Attachments myfile doc 被拒绝 我向
  • 合并两个(或更多)PDF

    背景 我需要为我的销售人员提供每周报告包 该包包含几个 5 10 个水晶报告 Problem 我想允许用户运行所有报告并且只运行单个报告 我想我可以通过创建报告然后执行以下操作来做到这一点 List
  • 如何使用 PowerShell 中的凭据从本地复制到远程位置?

    我是 PowerShell 的新手 我有用户名和密码来访问远程位置的共享文件夹 I need 复制文件foo txt从当前位置到 Bar foo myCOmpany com logs在为以下内容编写的 PS1 脚本中Powershell v
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使

随机推荐

  • Eclipse + Tomcat - 直接从工作区提供 Web 应用程序

    将 Tomcat 配置为直接从工作区中的项目目录提供服务的理想方法是什么 related https stackoverflow com a 6378629 292614 我想要我的静态网络资源每当我对它们进行更改时即可立即可用 而无需将它
  • 设置一堆简短/友好的重定向 URL

    我需要设置数百个遵循以下格式的短重定向 URL http mysite com shorturl 这将重定向到 http mysite com index php id N 其中 N 是与该快捷方式对应的 ID 执行此操作的最佳方法是什么
  • 查找字符和数字之间可能的双射

    假设您有一个字符串 S 和列表 L 中的一个数字序列 使得 len S len L 检查是否可以找到字符串的字符与序列中的数字之间的双射以使每个字符与一个且仅一个数字匹配的最干净的方法是什么 例如 aabbcc 应与 115522 匹配 但
  • 为动态创建的 HTML 元素创建事件监听器

    在 downMouseBtn event 事件处理程序中 我创建了元素 div 我需要为创建的项目创建一个事件监听器 我怎样才能创建这个 添加哪部分代码呢 我需要处理动态生成的项目的 mouseClick 事件 import Compone
  • 字符串中回文子序列的总数

    问题是这样的 对于作为输入给出的每个字符串 您需要告诉它的回文子序列的数量 不一定是不同的 请注意 空字符串不是回文 例如 aab 的回文子序列是 a a b aa 该方法返回 4 我心中有寻找最长回文子序列的动态规划解决方案 因此尝试从中
  • Reactive Cocoa 5 和 ReactiveSwift 网络请求处理

    我试图弄清楚是否可以使用 ReactiveSwift 和 RAC5 来实现适合我需求的网络请求处理 在主题下从 RACSignal 迁移到 ReactiveSwift 或 RAC5 https stackoverflow com quest
  • 如何在没有结构体实例的情况下调用特征方法?

    如果我有一个结构体 其方法没有self作为参数 我可以通过调用该方法SomeStruct method 我似乎无法对从特征定义的方法做同样的事情 例如 trait SomeTrait fn one trait gt uint struct
  • 未知提供商 CookieStore

    我正在提供服务 我想使用 cookieStore 模块 它工作正常 但是当单元测试时它会中断 并给出错误 cookieStoreProvider 该服务如下所示 serviceModule factory filtersService ro
  • 如何将 --relative 与 git format-patch 一起使用?

    当我使用git diff relative HEAD HEAD 我得到了一些不错的补丁输出 我删除了它所在目录之外的路径 我开始使用git format patch我也想用 relative但没有看到任何选项 我怎样才能得到同样的效果 Th
  • 从空 Swift 数组中获取对象类型

    有没有办法从空数组中获取数组元素的实例 我需要dynamic属性 因为我使用了一些 KVC 方法NSObject import Foundation class BaseClass NSObject func myFunction doWo
  • 如何获取 Python 字符串中括号内的值? [复制]

    这个问题在这里已经有答案了 我有这样的事情 a 2 3 4 b 12 3 5 我只想要括号内的值 我使用正则表达式 它有效 但我的老师不允许 我怎样才能做到这一点 gt gt gt a 2 3 4 gt gt gt a a index 1
  • C语言——调用没有函数原型的函数

    I found here http opencbp sourceforge net en US ISO8859 1 books opencbook func prototypes html如果函数位于函数调用之下 则函数原型在函数调用之前是
  • Python tk框架

    我有生成以下错误的 python 代码 objc 36554 Class TKApplication is implemented in both Library Frameworks Tk framework Versions 8 5 T
  • 如何禁用文本小部件的输入但允许编程输入?

    我该如何锁定一个Text小部件 以便用户只能选择并从中复制文本 但我仍然可以将文本插入到Text来自函数或类似函数 您是否尝试过简单地禁用文本小部件 text widget configure state disabled 在某些平台上 您
  • 长时间运行 RTS 游戏多人注意事项

    我正在开发一款实时太空策略游戏克隆游戏 该游戏当时没有任何多人游戏选项 我想添加多人游戏 游戏本身的时间比较长 大约需要10 15小时才能通关 这很长 我不想强 迫玩家不间断地玩它或由于崩溃 断电而失去游戏状态 类似的游戏是如何解决此类问题
  • 格式化代码片段以在 Blogger 上写博客 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的博客托管在 Blogger 上 我经常在以下位置发布代码片段C C Java XML等等 但我发现该片段被 损坏 是否有任何网站可以用来预先解析代
  • helper' aria-label=''####' 的未定义方法 `merge':string <%= form_for %> helper'> '####' 的未定义方法 `merge':string <%= form_for %> helper

    我有一个表单 当发布时 会呈现另一个表单 我想做的是将第一个表单中的参数传递到第二个表单的某些隐藏字段中 第二种表单使用 form for 表单助手 我想做的是让它接受发布给它的参数 表格如下所示 div class found l div
  • Facebook 开放图私人群组提要请求

    我想从图形 api 获取数据 特别是我尝试从组中获取时间线 例如 让我们看一下 Facebook 开发人员概述中提供的请求 https graph facebook com 195466193802264 https graph faceb
  • (int)、Convert.ToInt32(x) 或 Int32.Parse(x) 哪个最快?

    以下哪段代码对于转换某些对象 x 是最快 最佳实践 int myInt int x or int myInt Convert ToInt32 x or int myInt Int32 Parse x 或者在字符串 s 的情况下 int my
  • 将 .NET 表达式树链接到新程序集中

    我正在尝试编写自己的玩具 My Toy Language gt MSIL 编译器 以便更好地了解编译器的工作原理 我的解析和词法分析工作正常 我已经构建了表达式树并使用 System Linq Expressions 表达式树 API 我有