public AroundMethodWeaver(DemonTypes demonTypes, MethodDefinition target, MethodReference advice, FieldDefinition adviceField) { _demonTypes = demonTypes; _target = target; _advice = advice; _adviceField = adviceField; _il = target.Body.GetILProcessor(); _emitter = EmitterFactory.GetAppend(_il); }
public static void AddEmitterFactory(string name, EmitterFactory emitterFactory) { if (!EmitterFactories.ContainsKey(name)) { EmitterFactories.Add(name, emitterFactory); } else { EmitterFactories[name] = emitterFactory; } }
public BeforeMethodWeaver(DemonTypes demonTypes, MethodDefinition target, MethodReference advice, FieldDefinition adviceField) { _demonTypes = demonTypes; _target = target; _advice = advice; _adviceField = adviceField; _il = target.Body.GetILProcessor(); var originalFirstInstruction = target.Body.Instructions[0]; _emitter = EmitterFactory.Get(_il, i => _il.InsertBefore(originalFirstInstruction, i)); _insertBeforeOriginalFirst = i => _il.InsertBefore(originalFirstInstruction, i); }