Как преобразовать код IL в команды Mono.Cecil? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть следующий код C #

        this.Succeed = true;
        yield break;

, который находится в IL (говорит dnSpy):

        /* 0x0019AD95 16           */ IL_0000: ldc.i4.0
        /* 0x0019AD96 7380630006   */ IL_0001: newobj    instance void Class893/'<method_0>d__0'::.ctor(int32)
        /* 0x0019AD9B 25           */ IL_0006: dup
        /* 0x0019AD9C 02           */ IL_0007: ldarg.0
        /* 0x0019AD9D 7D54560004   */ IL_0008: stfld     class Class893 Class893/'<method_0>d__0'::'<>4__this'
        /* 0x0019ADA2 2A           */ IL_000D: ret

, и я хочу преобразовать его в инструкции Mono.Cecil, подобные этим:

                    inst.Add(Instruction.Create(OpCodes.Ldc_I4_0));
                    inst.Add(Instruction.Create(OpCodes.Newobj));
                    inst.Add(Instruction.Create(OpCodes.Dup, 0x0019AD9B));
                    inst.Add(Instruction.Create(OpCodes.Ldarg_0));
                    inst.Add(Instruction.Create(OpCodes.Stfld, 0x0019AD9D));
                    inst.Add(Instruction.Create(OpCodes.Ret));

Как бы я это сделал?

...