using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
/*****************************
* 概要:序列化与反序列化
* 设计者:DuanXuWen
* 设计时间:20180309
* 版本:0.1
* 修改者:
* 修改时间:
* ***************************/
namespace Common
{
public class SerializeHelper
{
/// <summary>
/// 序列化
/// </summary>
/// <param name="obj">对象</param>
/// <returns>返回二进制流</returns>
public static byte[] Serialize(object obj)
{
try
{
IFormatter formatter = new BinaryFormatter();
byte[] b;
using (MemoryStream ms = new MemoryStream())
{
formatter.Serialize(ms, obj);
ms.Position = 0;
b = new byte[ms.Length];
ms.Read(b, 0, b.Length);
}
return b;
}
catch (Exception ex)
{
//序列化异常
throw ex;
}
}
/// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T">输出类型</typeparam>
/// <param name="byteArray">数据流</param>
/// <returns>obj返回对象</returns>
public static T Deserialize<T>(byte[] byteArray) where T : class
{
try
{
IFormatter formatter = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ms.Write(byteArray, 0, byteArray.Length);
ms.Position = 0;
T obj = formatter.Deserialize(ms) as T;
return obj;
}
catch (Exception ex)
{
//反序列化异常
throw ex;
}
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="byteArray">数据流</param>
/// <returns>object返回对象</returns>
public static object Deserialize(byte[] byteArray)
{
try
{
IFormatter formatter = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ms.Write(byteArray, 0, byteArray.Length);
ms.Position = 0;
return formatter.Deserialize(ms);
}
catch (Exception ex)
{
//反序列化异常
throw ex;
}
}
}
}