public override ILGenerator Weave(ILGenerator ilGenerator) { var isFunction = MethodInfoImpl.IsFunction(); var weaveFunction = isFunction ? WeaveFunction : (Func <ILGenerator, ILGenerator>)WeaveAction; return(weaveFunction(ilGenerator)); }
public override ILGenerator Weave(ILGenerator ilGenerator) { FieldBuilder fieldBuilder = TypeDefinition.GetFieldBuilder(ContractType); ilGenerator.EmitLoadArg(0); ilGenerator.Emit(OpCodes.Ldfld, fieldBuilder); MethodInfoImpl.GetParameters() .Select(p => p.ParameterType) .ForEach(1, (paramType, i) => { ilGenerator.EmitLoadArg(i); }); ilGenerator.Emit(OpCodes.Callvirt, MethodInfoImpl); return(ilGenerator); }