Mono-Cecil:我如何获得mscorlib的ModuleDefinition?

时间:2010-07-07 14:33:45

标签: .net mono.cecil

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

1 个答案:

答案 0 :(得分:9)

获取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();

的指令

关于文档,请阅读维基上的importing页面。