c# - .NET 中用于 Windows 应用商店应用程序 API 的 Emit.OpCodes 的用途?

标签 c# windows-store-apps reflection.emit ilgenerator opcodes

我正在考虑将第三方库移植到 .NET for Windows Store apps。图书馆过度使用 System.Reflection.Emit.OpCodes通过调用 ILGenerator.Emit方法重载。

.NET for Windows Store Apps API 中,OpCode结构与OpCodes包含类,但没有 ILGenerator类,据我所知也没有替代品。

我显然遗漏了一些东西,但是:没有 ILGenerator类,包括System.Reflection.Emit.OpCode的目的是什么?和 OpCodes.NET for Windows Store apps API 中?

最佳答案

好问题。虽然我不能肯定地说,但我只能想到使用 OpCode/Opcodes 的两个原因(而且我真的无法想象它用于其他用途):

  1. 使用 ILGenerator 组装一段代码
  2. 使用 f.ex 反汇编一段代码。 MethodInfo.GetMethodBody 然后解析包含IL代码的字节

既然不是前者,我猜他们用的是后者。这方面的应用是静态代码分析;我自己用它 f.ex。实现一些模拟行为并弄清楚传递给它的 lambda 表达式是什么(在这种情况下不能使用表达式)。在这种情况下,代码分析的另一个应用可能更有可能是检查是否使用了某些不允许的类/方法/构造(我可以想象他们不希望您使用某些功能)。

关于c# - .NET 中用于 Windows 应用商店应用程序 API 的 Emit.OpCodes 的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14973892/

相关文章:

c# - 为什么委托(delegate)逆变对值类型不起作用?

visual-studio-2012 - 为 Windows 应用商店应用编写脚本创建程序包

javascript - UWP 应用中的 Web 请求

c# - 如何发出返回 ref 的动态方法?

c# - 如何在 C#/IL 中改变盒装值类型(原始或结构)

c# - 如何使用 Entity Framework 6 代码优先方法在 SQL Server 中创建序列并应用两个表?

C#/.NET MIDI 音序器 : Parse MIDI file and generate timed Note-On messages

c# - "unexpected response code for operation : 1"是什么意思?

c# - 有没有办法在运行时找到 PackageFamilyName?

.net - 当属性类型为 Int64 时,DynamicMethod 返回错误值