2010-11-23 48 views

回答

3

这将插入在测试方法上的分配,前提是该领域的DialogResult在同类型声明测试声明(否则你必须浏览它的层次结构才能找回它):

var module = ModuleDefinition.ReadModule ("assembly.dll"); 
var container = module.GetType ("Container"); 
var test = container.Methods.First (m => m.Name == "Test"); 
var field = container.Fields.First (f => f.Name == "DialogResult"); 

var il = test.Body.GetILProcessor(); 

var first = test.Body.Instructions [0]; 

il.InjectBefore (first, il.Create (OpCodes.Ldarg_0)); 
il.InjectBefore (first, il.Create (OpCodes.Ldc_i4, (int) DialogResult.Ok)); 
il.InjectBefore (first, il.Create (OpCodes.Stfld, field));