首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emit.OpCodes在Windows应用程序.NET中的用途?

Emit.OpCodes在Windows应用程序.NET中的用途?
EN

Stack Overflow用户
提问于 2013-02-20 06:49:55
回答 2查看 509关注 0票数 14

我正在考虑将第三方库移植到Windows应用程序的.NET上。库通过调用System.Reflection.Emit.OpCodes方法重载过度使用ILGenerator.Emit

在Windows中,包含了.NET结构和OpCodes类,但是没有ILGenerator类,据我所知,也没有替换类。

我显然遗漏了一些东西,但是:没有ILGenerator类,在.NET for应用程序API中包含System.Reflection.Emit.OpCodeOpCodes的目的是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-02-22 07:38:26

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

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

既然不是前者,我猜他们是在用后者。这方面的应用程序是静态代码分析;我自己也使用它f.ex。为了实现一些嘲讽行为并找出传递给它的lambda表达式是什么(在本例中不能使用表达式)。在这个场景中,代码分析的另一个应用程序可能更有可能是检查是否使用了某些类/方法/构造,这些类/方法/构造是不允许使用的(我可以想象,它们不希望您使用某些功能)。

票数 1
EN

Stack Overflow用户

发布于 2013-05-08 00:00:40

您可能会发现Mono对替换System.Reflection的某些功能很有用,官方上没有WinRT的端口,但非正式地说,有一个可用的这里端口,请注意,它是基于Silverlight版本的Mono。

请注意,您不能在应用程序包之外修改dll和exe,这是WinRT沙箱的一种安全措施。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14973892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档