using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace KanChang.Util { /// <summary> /// 版 本 1.0.0.0 /// Copyright (c) 2012-2017 张刊 /// CLR版本:4.0.30319.42000 /// 创建人:张刊 (kan.zhang-cn@hotmail.com) /// 序列化操作 /// </summary> public class Serialize { /// <summary> /// 将对象序列化到字节流中 /// </summary> /// <param name="instance">对象</param> public static byte[] ToBytes(object instance) { if (instance == null) return null; BinaryFormatter serializer = new BinaryFormatter(); using (MemoryStream stream = new MemoryStream()) { serializer.Serialize(stream, instance); stream.Position = 0; byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); return buffer; } } /// <summary> /// 将字节流反序列化为对象 /// </summary> /// <typeparam name="T">对象类名</typeparam> /// <param name="buffer">字节流</param> public static T FromBytes<T>(byte[] buffer) where T : class { if (buffer == null) return default(T); BinaryFormatter serializer = new BinaryFormatter(); using (MemoryStream stream = new MemoryStream()) { stream.Write(buffer, 0, buffer.Length); stream.Position = 0; object result = serializer.Deserialize(stream); if (result == null) return default(T); return (T)result; } } } }
把对象序列化为byte数组以及byte数组转对象(泛型)