private static object ReadValue(ElementType type, BufferedBinaryReader reader) { switch (type) { case ElementType.Boolean: return(reader.ReadBoolean()); case ElementType.Char: return(reader.ReadChar()); case ElementType.Int8: return(reader.ReadSByte()); case ElementType.UInt8: return(reader.ReadByte()); case ElementType.Int16: return(reader.ReadInt16()); case ElementType.UInt16: return(reader.ReadUInt16()); case ElementType.Int32: return(reader.ReadInt32()); case ElementType.UInt32: return(reader.ReadUInt32()); case ElementType.Int64: return(reader.ReadInt64()); case ElementType.UInt64: return(reader.ReadUInt64()); case ElementType.Single: return(reader.ReadSingle()); case ElementType.Double: return(reader.ReadDouble()); case ElementType.String: return(Encoding.Unicode.GetString(reader.ToArray())); case ElementType.Class: return(null); default: return(reader.ToArray()); } }