示例#1
0
 public void Read(ReaderContext ctxt, BlobReader reader, bool isFat, Func<OpCode, Row, object> resolveRow)
 {
     if (isFat)
     {
         Flags = (CorILExceptionClause)reader.ReadUInt32();
         TryOffset = (int)reader.ReadUInt32();
         TryLength = (int)reader.ReadUInt32();
         HandlerOffset = (int)reader.ReadUInt32();
         HandlerLength = (int)reader.ReadUInt32();
     }
     else
     {
         Flags = (CorILExceptionClause)reader.ReadUInt16();
         TryOffset = (int)reader.ReadUInt16();
         TryLength = (int)reader.ReadByte();
         HandlerOffset = (int)reader.ReadUInt16();
         HandlerLength = (int)reader.ReadByte();
     }
     var rowRef = default(TokenRef);
     rowRef.Read(ctxt, reader);
     rowRef.ResolveIndexes(ctxt);
     Class = rowRef.Value == null ? null : resolveRow(OpCode.Ldobj, rowRef.Value);
     if (Flags == CorILExceptionClause.Filter)
         FilterOffset = (int)reader.ReadUInt32();
 }
示例#2
0
        public void Read(ReaderContext ctxt, BlobReader reader, bool isFat, Func <OpCode, Row, object> resolveRow)
        {
            if (isFat)
            {
                Flags         = (CorILExceptionClause)reader.ReadUInt32();
                TryOffset     = (int)reader.ReadUInt32();
                TryLength     = (int)reader.ReadUInt32();
                HandlerOffset = (int)reader.ReadUInt32();
                HandlerLength = (int)reader.ReadUInt32();
            }
            else
            {
                Flags         = (CorILExceptionClause)reader.ReadUInt16();
                TryOffset     = (int)reader.ReadUInt16();
                TryLength     = (int)reader.ReadByte();
                HandlerOffset = (int)reader.ReadUInt16();
                HandlerLength = (int)reader.ReadByte();
            }
            var rowRef = default(TokenRef);

            rowRef.Read(ctxt, reader);
            rowRef.ResolveIndexes(ctxt);
            Class = rowRef.Value == null ? null : resolveRow(OpCode.Ldobj, rowRef.Value);
            if (Flags == CorILExceptionClause.Filter)
            {
                FilterOffset = (int)reader.ReadUInt32();
            }
        }