private void FixReferences()

in ILRepack/ReferenceFixator.cs [294:325]


        private void FixReferences(Instruction instr)
        {
            if (instr.OpCode.Code == Code.Calli)
            {
                var call_site = (Mono.Cecil.CallSite)instr.Operand;
                call_site.ReturnType = Fix(call_site.ReturnType);
            }
            else switch (instr.OpCode.OperandType)
                {
                    case OperandType.InlineField:
                        instr.Operand = Fix((FieldReference)instr.Operand);
                        break;
                    case OperandType.InlineMethod:
                        instr.Operand = Fix((MethodReference)instr.Operand);
                        break;
                    case OperandType.InlineType:
                        instr.Operand = Fix((TypeReference)instr.Operand);
                        break;
                    case OperandType.InlineTok:
                        if (instr.Operand is TypeReference)
                            instr.Operand = Fix((TypeReference)instr.Operand);
                        else if (instr.Operand is FieldReference)
                            instr.Operand = Fix((FieldReference)instr.Operand);
                        else if (instr.Operand is MethodReference)
                            instr.Operand = Fix((MethodReference)instr.Operand);
                        else
                            throw new InvalidOperationException();
                        break;
                    default:
                        break;
                }
        }