一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C# 類的序列化和反序列化

 孫無者 2020-05-14

   序列化 (Serialization)將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程。在序列化期間,對象將其當(dāng)前狀態(tài)寫入到臨時(shí)或持久性存儲區(qū)。以后,可以通過從存儲區(qū)中讀取或反序列化對象的狀態(tài),重新創(chuàng)建該對象。(摘自百度百科)

   在很多通訊或者數(shù)據(jù)存儲的過程中,都需要序列化和反序列化的過程。

  在C#中,如果想要進(jìn)行自定義類的序列化,只需要簡單地在定義類的時(shí)候添加Serializable標(biāo)簽即可。如:

1
2
3
4
5
6
[Serializable]
public class Person
{
    public string name;
    public int age;
}

  經(jīng)常用到的序列化方式有兩種:二進(jìn)制和XML,分為由System.Runtime.Serialization.Formatters.Binary.BinaryFormatter和System.Xml.Serialization.XmlSerializer實(shí)現(xiàn)。

  BinaryFormatter進(jìn)行序列化和反序列化的時(shí)候,不會關(guān)心實(shí)際類型。但是XmlSerializer需要。

  自己寫的一個簡單的序列化輔助類

復(fù)制代碼
public static class SerializeHelper { /// <summary> /// 使用UTF8編碼將byte數(shù)組轉(zhuǎn)成字符串 /// </summary> /// <param name='data'></param> /// <returns></returns> public static string ConvertToString(byte[] data) { return Encoding.UTF8.GetString(data , 0 , data.Length); } /// <summary> /// 使用指定字符編碼將byte數(shù)組轉(zhuǎn)成字符串 /// </summary> /// <param name='data'></param> /// <param name='encoding'></param> /// <returns></returns> public static string ConvertToString(byte[] data , Encoding encoding) { return encoding.GetString(data , 0 , data.Length); } /// <summary> /// 使用UTF8編碼將字符串轉(zhuǎn)成byte數(shù)組 /// </summary> /// <param name='str'></param> /// <returns></returns> public static byte[] ConvertToByte(string str) { return Encoding.UTF8.GetBytes(str); } /// <summary> /// 使用指定字符編碼將字符串轉(zhuǎn)成byte數(shù)組 /// </summary> /// <param name='str'></param> /// <param name='encoding'></param> /// <returns></returns> public static byte[] ConvertToByte(string str , Encoding encoding) { return encoding.GetBytes(str); } /// <summary> /// 將對象序列化為二進(jìn)制數(shù)據(jù) /// </summary> /// <param name='obj'></param> /// <returns></returns> public static byte[] SerializeToBinary(object obj) { MemoryStream stream = new MemoryStream( ); BinaryFormatter bf = new BinaryFormatter( ); bf.Serialize(stream , obj); byte[] data = stream.ToArray( ); stream.Close( ); return data; } /// <summary> /// 將對象序列化為XML數(shù)據(jù) /// </summary> /// <param name='obj'></param> /// <returns></returns> public static byte[] SerializeToXml(object obj) { MemoryStream stream = new MemoryStream( ); XmlSerializer xs = new XmlSerializer(obj.GetType( )); xs.Serialize(stream , obj); byte[] data = stream.ToArray( ); stream.Close( ); return data; } /// <summary> /// 將二進(jìn)制數(shù)據(jù)反序列化 /// </summary> /// <param name='data'></param> /// <returns></returns> public static object DeserializeWithBinary(byte[] data) { MemoryStream stream = new MemoryStream( ); stream.Write(data , 0 , data.Length); stream.Position = 0; BinaryFormatter bf = new BinaryFormatter( ); object obj = bf.Deserialize(stream); stream.Close( ); return obj; } /// <summary> /// 將二進(jìn)制數(shù)據(jù)反序列化為指定類型對象 /// </summary> /// <typeparam name='T'></typeparam> /// <param name='data'></param> /// <returns></returns> public static T DeserializeWithBinary<T>(byte[] data) { return (T)DeserializeWithBinary(data); } /// <summary> /// 將XML數(shù)據(jù)反序列化為指定類型對象 /// </summary> /// <typeparam name='T'></typeparam> /// <param name='data'></param> /// <returns></returns> public static T DeserializeWithXml<T>(byte[] data) { MemoryStream stream = new MemoryStream( ); stream.Write(data , 0 , data.Length); stream.Position = 0; XmlSerializer xs = new XmlSerializer(typeof(T)); object obj = xs.Deserialize(stream); stream.Close( ); return (T)obj; } }
復(fù)制代碼

  注意,在反序列化的時(shí)候,將byte[]寫入流以后,需要將游標(biāo)移到首位,即將Position置零,否則反序列化將報(bào)錯。

摘自https://www.cnblogs.com/hualuo-code/p/5165367.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲精品高清国产一线久久| 日韩国产传媒在线精品| 亚洲高清中文字幕一区二三区| 亚洲欧美一二区日韩高清在线| 国产一区二区三区成人精品| 91亚洲人人在字幕国产| 人妻亚洲一区二区三区| 久草精品视频精品视频精品| 欧美一级内射一色桃子| 精品推荐国产麻豆剧传媒| av国产熟妇露脸在线观看| 日韩蜜桃一区二区三区| 欧美乱视频一区二区三区| 福利在线午夜绝顶三级| 久久综合亚洲精品蜜桃| 欧美一级特黄特色大色大片| 高清免费在线不卡视频| 欧美日韩国产福利在线观看| 久久热在线免费视频精品| 国产av一区二区三区久久不卡| 九九九热视频免费观看| 日韩人妻精品免费一区二区三区 | 91人妻人澡人人爽人人精品 | 欧美老太太性生活大片| 日韩人妻一区中文字幕| 污污黄黄的成年亚洲毛片| 欧美丰满人妻少妇精品| 中文字幕日产乱码一区二区| 精品视频一区二区三区不卡| 日韩欧美高清国内精品| 久久热麻豆国产精品视频| 日韩特级黄片免费在线观看| 国内尹人香蕉综合在线| 高清免费在线不卡视频| 丁香七月啪啪激情综合| 国产丝袜极品黑色高跟鞋| 欧美日韩国产成人高潮| 在线播放欧美精品一区| 一级欧美一级欧美在线播| 亚洲高清中文字幕一区二区三区| 欧美人妻少妇精品久久性色|