c#中的数据对象序列化

来源:互联网 发布:java将object转为date 编辑:程序博客网 时间:2024/05/19 23:13
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.Serialization.Formatters.Binary;using System.IO;namespace Model{    public class SerializationUnit    {        /// <summary>          /// 把对象序列化为字节数组          /// </summary>          public static byte[] SerializeObject(object obj)        {            if (obj == null)                return null;            //内存实例            MemoryStream ms = new MemoryStream();            //创建序列化的实例            BinaryFormatter formatter = new BinaryFormatter();            long size = ms.GetBuffer().Length;            formatter.Serialize(ms, obj);//序列化对象,写入ms流中              ms.Position = 0;            //byte[] bytes = new byte[ms.Length];//这个有错误            byte[] bytes = ms.GetBuffer();            ms.Read(bytes, 0, bytes.Length);            ms.Close();            return bytes;        }        /// <summary>          /// 把字节数组反序列化成对象          /// </summary>          public static object DeserializeObject(byte[] bytes)        {            object obj = null;            if (bytes == null)                return obj;            //利用传来的byte[]创建一个内存流            MemoryStream ms = new MemoryStream(bytes);            ms.Position = 0;            BinaryFormatter formatter = new BinaryFormatter();            obj = formatter.Deserialize(ms);//把内存流反序列成对象              ms.Close();            return obj;        }        /// <summary>        /// 把字典序列化        /// </summary>        /// <param name="dic"></param>        /// <returns></returns>        public static byte[] SerializeDic(Dictionary<string, object> dic)        {            if (dic.Count == 0)                return null;            MemoryStream ms = new MemoryStream();            BinaryFormatter formatter = new BinaryFormatter();            formatter.Serialize(ms, dic);//把字典序列化成流            byte[] bytes = new byte[ms.Length];//从流中读出byte[]            ms.Read(bytes, 0, bytes.Length);            return bytes;        }        /// <summary>        /// 反序列化返回字典        /// </summary>        /// <param name="bytes"></param>        /// <returns></returns>        public static Dictionary<string, object> DeserializeDic(byte[] bytes)        {            Dictionary<string, object> dic = null;            if (bytes == null)                return dic;            //利用传来的byte[]创建一个内存流            MemoryStream ms = new MemoryStream(bytes);            ms.Position = 0;            BinaryFormatter formatter = new BinaryFormatter();            //把流中转换为Dictionary            dic = (Dictionary<string, object>)formatter.Deserialize(ms);            return dic;        }    }}

原创粉丝点击