您好,登錄后才能下訂單哦!
這篇文章主要介紹了C#中序列化怎么實現,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
貼一下自己序列化的代碼:
public class XMLUtil { /// <summary> /// XML & Datacontract Serialize & Deserialize Helper /// </summary> /// <typeparam name="T"></typeparam> /// <param name="serialObject"></param> /// <returns></returns> public static string Serializer<T>(T serialObject) where T : class { string result = string.Empty; using (MemoryStream mem = new MemoryStream()) { using (XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8)) { System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T)); ser.Serialize(writer, serialObject); result = Encoding.UTF8.GetString(mem.ToArray()); } } return result; } public static T Deserialize<T>(string str) where T : class { T result = null; using (MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(str))) { using (StreamReader streamReader = new StreamReader(memoryStream)) { System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); result = (T)xmlSerializer.Deserialize(memoryStream); } } return result; } }
上面的寫法持續序列化不會有內存溢出的性能問題,之前一直被告知直接引用公司某位老鳥封裝好的dll來序列化,后來發現了老是出現內存溢出,貼一下它的錯誤寫法,僅供吸取教訓:
public class XMLUtil { /// <summary> /// XML & Datacontract Serialize & Deserialize Helper /// </summary> /// <typeparam name="T"></typeparam> /// <param name="serialObject"></param> /// <returns></returns> public static string Serializer<T>(T serialObject) where T : class { //try //{ XmlSerializer ser = new XmlSerializer(typeof(T)); System.IO.MemoryStream mem = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8); ser.Serialize(writer, serialObject); writer.Close(); return Encoding.UTF8.GetString(mem.ToArray()); //} //catch (Exception ex) //{ // return null; //} } public static T Deserialize<T>(string str) where T : class { //try //{ XmlSerializer mySerializer = new XmlSerializer(typeof(T)); StreamReader mem2 = new StreamReader( new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str)), System.Text.Encoding.UTF8); return (T)mySerializer.Deserialize(mem2); //} //catch (Exception) //{ // return null; //} } //public static string Json_SerializeObject(object value) //{ // return Newtonsoft.Json.JsonConvert.SerializeObject(value); //} //public static object Json_DeserializeObject(string value) //{ // return Newtonsoft.Json.JsonConvert.DeserializeObject(value); //} //public static T Json_DeserializeObject<T>(string value) //{ // return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(value); //} }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C#中序列化怎么實現”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。