using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization; using System.IO; namespace SmartKernel.Utils { /// /// Универсальный сериализатор /// /// Сериализуемый тип public class Serializator where T : class { /// /// Сериализовать объект в массив байтов /// /// Объект /// Сериализованный массив данных public static byte[] Serialize(T obj) { BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, obj); return ms.ToArray(); } /// /// Сериализовать объект в поток данных /// /// Объект /// Поток данных, в который будет произведена сериализация public static void Serialize(T obj, Stream data) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(data, obj); } /// /// Десериализация данных из массива байтов /// /// Данные /// Десериализованный объект public static T Deserialize(byte[] data) { BinaryFormatter bf = new BinaryFormatter(); //MemoryStream ms = (MemoryStream)(Data); return (T)bf.Deserialize(new MemoryStream(data)); } /// /// Десереализация данных из потока /// /// Поток сериализованных данных /// Десериализованный объект public static T Deserialize(Stream data) { BinaryFormatter bf = new BinaryFormatter(); // MemoryStream ms = (MemoryStream)(data); return (T)bf.Deserialize(data); } } }