我正在考虑将第三方库移植到 .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 的两个原因(而且我真的无法想象它用于其他用途):
- 使用 ILGenerator 组装一段代码
- 使用 f.ex 反汇编一段代码。 MethodInfo.GetMethodBody 然后解析包含IL代码的字节
既然不是前者,我猜他们用的是后者。这方面的应用是静态代码分析;我自己用它 f.ex。实现一些模拟行为并弄清楚传递给它的 lambda 表达式是什么(在这种情况下不能使用表达式)。在这种情况下,代码分析的另一个应用可能更有可能是检查是否使用了某些不允许的类/方法/构造(我可以想象他们不希望您使用某些功能)。
关于c# - .NET 中用于 Windows 应用商店应用程序 API 的 Emit.OpCodes 的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14973892/