示例#1
0
        public override object ReadObject(Hessian2Reader reader)
        {
            var tag = reader.ReadListStart();

            switch (tag)
            {
            case Constants.Null:
                return(null);

            case Constants.VariableList:
                return(ReadList(reader, -1));

            case Constants.VariableUnTypeList:
                return(ReadList(reader, -1));

            case Constants.FixedList:
                reader.ReadType();
                return(ReadList(reader, reader.ReadInt()));

            case Constants.FixedUnTypeList:
                return(ReadList(reader, reader.ReadInt()));

            case 0x70:
            case 0x71:
            case 0x72:
            case 0x73:
            case 0x74:
            case 0x75:
            case 0x76:
            case 0x77:
                reader.ReadType();
                return(ReadList(reader, tag - 0x70));

            case 0x78:
            case 0x79:
            case 0x7a:
            case 0x7b:
            case 0x7c:
            case 0x7d:
            case 0x7e:
            case 0x7f:
                return(ReadList(reader, tag - 0x78));

            default:
                throw new HessianException($"unknown code {(char)tag} where read type {Type.FullName}");
            }
        }