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);
}
}
}