using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.Serialization;using System.IO;using System.Xml;namespace Common.Utility.XMLSerialization{ /// <summary> /// DataContractSerializer /// </summary> /// <typeparam name="T"></typeparam> public class DataContractSerializer<T> { /// <summary> /// 實體序列化成xml string /// </summary> /// <param name="meta"></param> /// <returns></returns> public static string ToXMLString(T meta) { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); string xmlStr = string.Empty; using (MemoryStream ms = new MemoryStream()) { try { dcs.WriteObject(ms, meta); xmlStr = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); } catch { throw; } } return xmlStr; } /// <summary> /// DataContract序列化 /// </summary> /// <param name="value"></param> /// <param name="knownTypes">已知類型的集合</param> /// <returns></returns> public static string ToXMLString(object value, IEnumerable<Type> knownTypes = null) { try { DataContractSerializer dataContractSerializer = new DataContractSerializer(value.GetType(), knownTypes); using (MemoryStream ms = new MemoryStream()) { dataContractSerializer.WriteObject(ms, value); ms.Seek(0, SeekOrigin.Begin); using (StreamReader sr = new StreamReader(ms)) { return sr.ReadToEnd(); } } } catch { throw; } } /// <summary> /// 實體還原序列化 /// </summary> /// <param name="xml"></param> /// <returns></returns> public static T ReadFromXML(string xmlStr) { T meta; try { DataContractSerializer dcs = new DataContractSerializer(typeof(T)); using (TextReader reader = new StringReader(xmlStr)) { using (XmlReader xReader = XmlReader.Create(reader)) { meta = (T)dcs.ReadObject(xReader); } } } catch { throw; } return meta; } /// <summary> /// 實體還原序列化 /// </summary> /// <param name="xmlStr"></param> /// <param name="knownTypes">IEnumerable<Type></param> /// <returns></returns> public static T ReadFromXML(string xmlStr, IEnumerable<Type> knownTypes = null) { T meta; try { DataContractSerializer dcs = new DataContractSerializer(typeof(T), knownTypes); using (TextReader reader = new StringReader(xmlStr)) { using (XmlReader xReader = XmlReader.Create(reader)) { meta = (T)dcs.ReadObject(xReader); } } } catch { throw; } return meta; } }}
以上就是C# 實體類序列化與還原序列化二 (DataContractSerializer) 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!