Пример #1
0
        public override ILGenerator Weave(ILGenerator ilGenerator)
        {
            var isFunction    = MethodInfoImpl.IsFunction();
            var weaveFunction = isFunction ? WeaveFunction : (Func <ILGenerator, ILGenerator>)WeaveAction;

            return(weaveFunction(ilGenerator));
        }
Пример #2
0
        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);
        }