2010-11-23 11 views

Répondre

3

Cela insérera l'affectation en haut de la méthode d'essai, à condition que le DialogResult de champ est déclaré dans le même type déclarant test (sinon vous devrez parcourir sa hiérarchie pour le récupérer):

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));