public Add ( |
||
localBuilder | ||
return | void |
public override void Weave(ILGenerator ilGenerator) { FieldBuilder contractFieldBuilder = null; var declaredLocalBuilder = ilGenerator.DeclareLocal(ArgumentType); var ctorInterceptionArgs = ArgumentType.GetConstructors()[0]; var argsLocalBuilder = LocalBuilderRepository.Get(previousAspectArgType); var methodPropoertyInfo = previousAspectArgType.GetProperty("Method"); LocalBuilderRepository.Add(declaredLocalBuilder); contractFieldBuilder = WeavingSettings.TypeDefinition.GetFieldBuilder(WeavingSettings.ContractType); ilGenerator.EmitLoadArg(0); ilGenerator.Emit(OpCodes.Ldfld, contractFieldBuilder); ilGenerator.EmitLoadLocal(argsLocalBuilder); ilGenerator.Emit(OpCodes.Callvirt, methodPropoertyInfo.GetGetMethod()); ilGenerator.Emit(OpCodes.Ldsfld, BindingsDependency); Parameters.ForEach(1, (parameter, i) => { var property = previousAspectArgType.GetProperty("Arg{0}".Fmt(i)); ilGenerator.EmitLoadLocal(argsLocalBuilder); ilGenerator.Emit(OpCodes.Callvirt, property.GetGetMethod()); }); ilGenerator.Emit(OpCodes.Newobj, ctorInterceptionArgs); ilGenerator.EmitStoreLocal(declaredLocalBuilder); }
public override void Weave(ILGenerator ilGenerator) { var localBuilder = BuildArguments(ilGenerator); LocalBuilderRepository.Add(localBuilder); }