我正在考虑将第三方库移植到Windows应用程序的.NET上。库通过调用System.Reflection.Emit.OpCodes方法重载过度使用ILGenerator.Emit。
在Windows中,包含了.NET结构和OpCodes类,但是没有ILGenerator类,据我所知,也没有替换类。
我显然遗漏了一些东西,但是:没有ILGenerator类,在.NET for应用程序API中包含System.Reflection.Emit.OpCode和OpCodes的目的是什么?
发布于 2013-02-22 07:38:26
问得好。虽然我不能肯定地说,但我只能想到使用OpCode /OpCode的两个原因(而且我真的无法想象它被用于其他事情):
既然不是前者,我猜他们是在用后者。这方面的应用程序是静态代码分析;我自己也使用它f.ex。为了实现一些嘲讽行为并找出传递给它的lambda表达式是什么(在本例中不能使用表达式)。在这个场景中,代码分析的另一个应用程序可能更有可能是检查是否使用了某些类/方法/构造,这些类/方法/构造是不允许使用的(我可以想象,它们不希望您使用某些功能)。
发布于 2013-05-08 00:00:40
您可能会发现Mono对替换System.Reflection的某些功能很有用,官方上没有WinRT的端口,但非正式地说,有一个可用的这里端口,请注意,它是基于Silverlight版本的Mono。
请注意,您不能在应用程序包之外修改dll和exe,这是WinRT沙箱的一种安全措施。
https://stackoverflow.com/questions/14973892
复制相似问题