using System; using System.Data; using System.Xml; using System.Xml.Serialization; using System.Collections.Generic; using System.Text; using System.IO; namespace DCM.Utility { /// <summary> /// 序列化与反序列化对象操作类 /// </summary> public class Serialize { /// <summary> /// 序列化对象 /// </summary> /// <param name="o"></param> /// <returns></returns> public static string SerializeObject(object o) { System.Runtime.Serialization.IFormatter obj = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); MemoryStream ms = new MemoryStream(); obj.Serialize(ms, o); BinaryReader br = new BinaryReader(ms); ms.Position = 0; byte[] bs = br.ReadBytes((int)ms.Length); ms.Close(); return Convert.ToBase64String(bs); } /// <summary> /// 反序列化对象 /// </summary> /// <param name="str"></param> /// <returns></returns> public static object DeserializeObject(string str) { System.Runtime.Serialization.IFormatter obj = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); byte[] bs = Convert.FromBase64String(str); MemoryStream ms = new MemoryStream(); ms.Write(bs, 0, bs.Length); ms.Position = 0; object o = obj.Deserialize(ms); ms.Close(); return o; } /// <summary> /// 序列化DataTable /// </summary> /// <param name="pDt">包含数据的DataTable</param> /// <returns>序列化的DataTable</returns> public static string SerializeDataTableXml(DataTable pDt) { // 序列化DataTable StringBuilder sb = new StringBuilder(); XmlWriter writer = XmlWriter.Create(sb); XmlSerializer serializer = new XmlSerializer(typeof(DataTable)); serializer.Serialize(writer, pDt); writer.Close(); return sb.ToString(); } /// <summary> /// 反序列化DataTable /// </summary> /// <param name="pXml">序列化的DataTable</param> /// <returns>DataTable</returns> public static DataTable DeserializeDataTable(string pXml) { StringReader strReader = new StringReader(pXml); XmlReader xmlReader = XmlReader.Create(strReader); XmlSerializer serializer = new XmlSerializer(typeof(DataTable)); DataTable dt = serializer.Deserialize(xmlReader) as DataTable; return dt; } } }