/// <summary> /// Десериализовать контракт данных. /// </summary> /// <typeparam name="T">Тип контракта.</typeparam> /// <param name="data">Байты.</param> /// <returns>Объект.</returns> protected T DeserializeDataContract <T>(byte[] data) { if (data == null) { return(default(T)); } var serializer = DataContractSerializerCache.GetSerializer <T>(); using (var str = new MemoryStream(data)) { using (var rd = XmlDictionaryReader.CreateBinaryReader(str, XmlDictionaryReaderQuotas.Max)) { return((T)serializer.ReadObject(rd)); } } }
/// <summary> /// Десериализовать. /// </summary> /// <param name="data">Данные.</param> /// <returns>Объект.</returns> public ISerializableObject Deserialize(byte[] data) { if (data == null) { return(null); } var serializer = DataContractSerializerCache.GetSerializer <TBase>(); using (var str = new MemoryStream(data)) { using (var rd = XmlDictionaryReader.CreateBinaryReader(str, XmlDictionaryReaderQuotas.Max)) { var r = serializer.ReadObject(rd) as T; return(r != null?ValidateAfterDeserialize(r) : null); } } }
/// <summary> /// Сериализовать контракт данных. /// </summary> /// <typeparam name="T">Тип контракта.</typeparam> /// <param name="obj">Объект.</param> /// <returns>Байты.</returns> protected byte[] SerializeDataContract <T>(T obj) { if (obj == null) { return(null); } var serializer = DataContractSerializerCache.GetSerializer <T>(); using (var str = new MemoryStream()) { using (var wr = XmlDictionaryWriter.CreateBinaryWriter(str)) { serializer.WriteObject(wr, obj); wr.Flush(); } return(str.ToArray()); } }
/// <summary> /// Сериализовать. /// </summary> /// <param name="obj">Объект.</param> /// <returns>Сериализованное медиа.</returns> private byte[] SerializeToBytes(T obj) { if (obj == null) { return(null); } var serializer = DataContractSerializerCache.GetSerializer <TBase>(); using (var str = new MemoryStream()) { using (var wr = XmlDictionaryWriter.CreateBinaryWriter(str)) { serializer.WriteObject(wr, ValidateContract(obj)); wr.Flush(); } return(str.ToArray()); } }