Exemple #1
0
        public override void Visit(Model.Bytecode.LoadFieldInstruction instruction)
        {
            Cecil.FieldReference       fieldReference = referenceGenerator.FieldReference(instruction.Field);
            Mono.Cecil.Cil.Instruction cilIns;
            if (instruction.Operation == Model.Bytecode.LoadFieldOperation.Content)
            {
                if (!instruction.Field.IsStatic)
                {
                    cilIns = processor.Create(Mono.Cecil.Cil.OpCodes.Ldfld, fieldReference);
                }
                else
                {
                    cilIns = processor.Create(Mono.Cecil.Cil.OpCodes.Ldsfld, fieldReference);
                }
            }
            else
            {
                if (!instruction.Field.IsStatic)
                {
                    cilIns = processor.Create(Mono.Cecil.Cil.OpCodes.Ldflda, fieldReference);
                }
                else
                {
                    cilIns = processor.Create(Mono.Cecil.Cil.OpCodes.Ldsflda, fieldReference);
                }
            }

            Result = new List <Mono.Cecil.Cil.Instruction>()
            {
                cilIns
            };
        }