Example #1
0
        void ReadTypeDefOrRef()
        {
            var  start         = currPos;
            uint codedToken    = ReadCompressedUInt32();
            uint compressedLen = (uint)(currPos - start);

            if (!CodedToken.TypeDefOrRef.Decode(codedToken, out MDToken token))
            {
                ThrowInvalidSignatureException();
            }
            if (!remappedTypeTokens.TryGetValue(token.Raw, out uint newToken))
            {
                return;
            }
            uint newCodedToken    = CodedToken.TypeDefOrRef.Encode(newToken);
            uint newCodedTokenLen = (uint)MDPatcherUtils.GetCompressedUInt32Length(newCodedToken);

            if (usingBuilder || newCodedTokenLen != compressedLen)
            {
                SwitchToBuilder(compressedLen);
                WriteCompressedUInt32(newCodedToken);
            }
            else
            {
                currPos = start;
                WriteCompressedUInt32(newCodedToken);
            }
        }