/// <summary> /// Deserialize a DynamicSchema record stored as binary data. /// </summary> /// <param name="binary">raw binary record data</param> /// <returns>dictionary of field ID to field value</returns> public static Dictionary <int, object> DeserializeRecord(byte[] binary) { using (MemoryStream ms = new MemoryStream(binary)) { using (BinaryReader br = getBinaryReader(ms)) { // Read version code byte serializerVersionCode = br.ReadByte(); SerializerVersion serializerVersion = (SerializerVersion)serializerVersionCode; // Determine the correct deserializer DynamicSchemaDeserializer deserializer = null; switch (serializerVersion) { case SerializerVersion.VER_3_12: deserializer = new Deserializers.Deserializer0312(); break; } if (deserializer == null) { throw new NotSupportedException(String.Format("Serializer version {0} not supported", serializerVersionCode)); } // Perform deserialization return(deserializer.DeserializeRecord(br)); } } }
/// <summary> /// Deserialize a DynamicSchema field stored as binary data. /// </summary> /// <param name="br">binary data reader</param> /// <returns>deserialized field data</returns> public static object DeserializeField(BinaryReader br) { // Read version code byte serializerVersionCode = br.ReadByte(); SerializerVersion serializerVersion = (SerializerVersion)serializerVersionCode; // Determine the correct deserializer DynamicSchemaDeserializer deserializer = null; switch (serializerVersion) { case SerializerVersion.VER_3_12: deserializer = new Deserializers.Deserializer0312(); break; } if (deserializer == null) { throw new NotSupportedException(String.Format("Serializer version {0} not supported", serializerVersionCode)); } // Perform deserialization return(deserializer.DeserializeField(br)); }