public override LocalBuilder BuildArguments(ILGenerator ilGenerator) { LocalBuilder propertyLocalBuilder = null; FieldBuilder contractFieldBuilder = null; LocalBuilder aspectArgLocalBuilder = null; ConstructorInfo ctorInterceptionArgs = null; AbstractAspectPropertyArgsWeaver methodWeaver = null; propertyLocalBuilder = LocalBuilderRepository.Declare(() => { return ilGenerator.DeclareLocal(typeof(PropertyInfo)); }); ctorInterceptionArgs = ArgumentType.GetConstructors()[0]; aspectArgLocalBuilder = ilGenerator.DeclareLocal(ArgumentType); contractFieldBuilder = WeavingSettings.TypeDefinition.GetFieldBuilder(WeavingSettings.ContractType); methodWeaver = new AspectArgsGetPropertyWeaver(Member, propertyLocalBuilder, aspectWeavingSettings); methodWeaver.Weave(ilGenerator); ilGenerator.EmitLoadArg(0); ilGenerator.Emit(OpCodes.Ldfld, contractFieldBuilder); ilGenerator.EmitLoadLocal(propertyLocalBuilder); ilGenerator.Emit(OpCodes.Ldsfld, BindingsDependency); ilGenerator.Emit(OpCodes.Newobj, ctorInterceptionArgs); ilGenerator.EmitStoreLocal(aspectArgLocalBuilder); return aspectArgLocalBuilder; }
public override LocalBuilder BuildArguments(ILGenerator ilGenerator) { LocalBuilder propertyLocalBuilder = null; FieldBuilder contractFieldBuilder = null; LocalBuilder aspectArgLocalBuilder = null; ConstructorInfo ctorInterceptionArgs = null; AbstractAspectPropertyArgsWeaver methodWeaver = null; propertyLocalBuilder = LocalBuilderRepository.Declare(() => { return(ilGenerator.DeclareLocal(typeof(PropertyInfo))); }); ctorInterceptionArgs = ArgumentType.GetConstructors()[0]; aspectArgLocalBuilder = ilGenerator.DeclareLocal(ArgumentType); contractFieldBuilder = WeavingSettings.TypeDefinition.GetFieldBuilder(WeavingSettings.ContractType); methodWeaver = new AspectArgsGetPropertyWeaver(Member, propertyLocalBuilder, aspectWeavingSettings); methodWeaver.Weave(ilGenerator); ilGenerator.EmitLoadArg(0); ilGenerator.Emit(OpCodes.Ldfld, contractFieldBuilder); ilGenerator.EmitLoadLocal(propertyLocalBuilder); ilGenerator.Emit(OpCodes.Ldsfld, BindingsDependency); ilGenerator.Emit(OpCodes.Newobj, ctorInterceptionArgs); ilGenerator.EmitStoreLocal(aspectArgLocalBuilder); return(aspectArgLocalBuilder); }