Ejemplo n.º 1
0
        public void TestByte()
        {
            IPofReader pofReader = initPofReader("Byte");

            Assert.AreEqual(1, pofReader.ReadByte(0));
            Assert.AreEqual(0, pofReader.ReadByte(0));
            Assert.AreEqual(200, pofReader.ReadByte(0));
            Assert.AreEqual(255, pofReader.ReadByte(0));
        }
        /// <summary>
        /// Restore the contents of a user type instance by reading its state
        /// using the specified <see cref="IPofReader"/> object.
        /// </summary>
        /// <param name="reader">
        /// The <b>IPofReader</b> from which to read the object's state.
        /// </param>
        /// <exception cref="IOException">
        /// If an I/O error occurs.
        /// </exception>
        public virtual void ReadExternal(IPofReader reader)
        {
            if (m_value != null || m_isAttribute || !m_isMutable)
            {
                throw new Exception("deserialization not active");
            }

            switch (reader.ReadByte(0))
            {
            case 0:
                break;

            case (byte)XmlValueType.Boolean:
                m_value = reader.ReadBoolean(1);
                break;

            case (byte)XmlValueType.Integer:
                m_value = reader.ReadInt32(1);
                break;

            case (byte)XmlValueType.Long:
                m_value = reader.ReadInt64(1);
                break;

            case (byte)XmlValueType.Double:
                m_value = reader.ReadDouble(1);
                break;

            case (byte)XmlValueType.Decimal:
                m_value = reader.ReadDecimal(1);
                break;

            case (byte)XmlValueType.String:
                m_value = reader.ReadString(1);
                break;

            case (byte)XmlValueType.Binary:
                m_value = reader.ReadBinary(1);
                break;

            case (byte)XmlValueType.DateTime:
                m_value = reader.ReadDateTime(1);
                break;

            default:
                throw new IOException();
            }

            m_isAttribute = reader.ReadBoolean(2);
            m_isMutable   = reader.ReadBoolean(3);
        }