12

我正在尝试编写调用 mscorlib 中的方法的 IL,但我无法弄清楚如何让ModuleDefinitionmscorlib 实际引用类型和方法,并且缺少文档和谷歌。

4

1 回答 1

11

获取 mscorlib 的 ModuleDefinition 非常简单。这是一个简单的方法:

ModuleDefinition corlib = ModuleDefinition.ReadModule (typeof (object).Module.FullyQualifiedName);

但是,如果您在 mscorlib 中注入调用方法的代码,则不必自己加载模块。例如:

MethodDefinition method = ...;
ILProcessor il = method.Body.GetILProcessor ();

Instruction call_writeline = il.Create (
    OpCodes.Call, 
    method.Module.Import (typeof (Console).GetMethod ("WriteLine", Type.EmptyTypes)));

创建一条指令来调用 Console.WriteLine();

至于文档,请阅读 wiki 上的导入页面。

于 2010-07-07T14:50:42.407 回答