亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C# 三種序列化方法分享

2020-01-24 02:46:51
字體:
來源:轉載
供稿:網友

序列化是將一個對象轉換成字節流以達到將其長期保存在內存、數據庫或文件中的處理過程。它的主要目的是保存對象的狀態以便以后需要的時候使用。與其相反的過程叫做反序列化。

序列化一個對象
為了序列化一個對象,我們需要一個被序列化的對象,一個容納被序列化了的對象的(字節)流和一個格式化器。進行序列化之前我們先看看System.Runtime.Serialization名字空間。ISerializable接口允許我們使任何類成為可序列化的類。

如果我們給自己寫的類標識[Serializable]特性,我們就能將這些類序列化。除非類的成員標記了[NonSerializable],序列化會將類中的所有成員都序列化。

序列化的類型
•二進制(流)序列化
•SOAP序列化
•XML序列化
二進制(流)序列化:
二進制(流)序列化是一種將數據寫到輸出流,以使它能夠用來自動重構成相應對象的機制。二進制,其名字就暗示它的必要信息是保存在存儲介質上,而這些必要信息要求創建一個對象的精確的二進制副本。在二進制(流)序列化中,整個對象的狀態都被保存起來,而XML序列化只有部分數據被保存起來。為了使用序列化,我們需要引入System.Runtime.Serialization.Formatters.Binary名字空間. 下面的代碼使用BinaryFormatter類序列化.NET中的string類型的對象。

復制代碼 代碼如下:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace SerializationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Serialization of String Object         
            string strobj = "test string for serialization";
            FileStream stream = new FileStream("C://StrObj.txt", FileMode.Create, FileAccess.Write ,
            FileShare.None);
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, strobj);
            stream.Close();

            //Deserialization of String Object
            FileStream readstream = new FileStream("C://StrObj.txt", FileMode.Open , FileAccess.Read ,
            FileShare.Read );
            string readdata = (string)formatter.Deserialize(readstream);
            readstream.Close();
            Console.WriteLine(readdata);
            Console.ReadLine();

        }
    }
}

SOAP序列化:
SOAP協議是一個在異構的應用程序之間進行信息交互的理想的選擇。我們需要在應用程序中添加System.Runtime.Serialization.Formatters.Soap名字空間以便在.Net中使用SOAP序列化。SOAP序列化的主要優勢在于可移植性。SoapFormatter把對象序列化成SOAP消息或解析SOAP消息并重構被序列化的對象。下面的代碼在.Net中使用SoapFormatter類序列化string類的對象。

復制代碼 代碼如下:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap ;

namespace SerializationTest
 {
    class Program
    {
        static void Main(string[] args)
        {
            //Serialization of String Object           
            string strobj = "test string for serialization";
            FileStream stream = new FileStream("C://StrObj.txt", FileMode.Create, FileAccess.Write ,
            FileShare.None);
            SoapFormatter formatter = new SoapFormatter();
            formatter.Serialize(stream, strobj);
            stream.Close();
            //Deserialization of String Object
            FileStream readstream = new FileStream("C://StrObj.txt", FileMode.Open , FileAccess.Read ,
            FileShare.Read );
            string readdata = (string)formatter.Deserialize(readstream);
            readstream.Close();
            Console.WriteLine(readdata);
            Console.ReadLine();
        }
    }
}

XML序列化:
根據MSDN的描述,“XML序列化將一個對象或參數的公開字段和屬性以及方法的返回值轉換(序列化)成遵循XSD文檔標準的XML流。因為XML是一個開放的標準,XML能被任何需要的程序處理,而不管在什么平臺下,因此XML序列化被用到帶有公開的屬性和字段的強類型類中,它的這些發生和字段被轉換成序列化的格式(在這里是XML)存儲或傳輸?!?/P>

我們必須添加System.XML.Serialization引用以使用XML序列化。使用XML序列化的基礎是XmlSerializer。下面的代碼是在.Net中使用XmlSerializer類序列化string對象。

復制代碼 代碼如下:

using System;
using System.IO;
using System.Xml.Serialization;

namespace SerializationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Serialization of String Object           
            string strobj = "test string for serialization";
            FileStream stream = new FileStream("C://StrObj.txt", FileMode.Create, FileAccess.Write ,
            FileShare.None);
            XmlSerializer  xmlserializer = new XmlSerializer(typeof(string));
            xmlserializer.Serialize(stream, strobj);
            stream.Close();

 
            //Deserialization of String Object
            FileStream readstream = new FileStream("C://StrObj.txt", FileMode.Open , FileAccess.Read ,
            FileShare.Read );
            string readdata = (string)xmlserializer.Deserialize(readstream);
            readstream.Close();
            Console.WriteLine(readdata);
            Console.ReadLine();

        }
    }
}

什么是格式化器?
  一個格式化器用來確定一個對象的序列格式。它們目的是在網絡上傳輸一個對象之前將其序列化成合適的格式。它們提供IFormatter接口。在.NET里提供了兩個格式化類:BinaryFormatter和SoapFormatter,它們都繼承了IFormatter接口。

  使用序列化
  序列化允許開發人員保存一個對象的狀態并在需要的時候重構對象,同時很好地支持對象存儲和數據交換。通過序列化,開發人員可以利用Web Service發送對象到遠端應用程序,從一個域傳輸對象到另一個域,以XML的格式傳輸一個對象并能通過防火墻,或者在應用程序間保持安全性或用戶特定信息等等。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美国产网站| 亚洲精品一区二区久| 日韩视频免费观看| 欧美精品videos性欧美| 欧美亚洲国产另类| 亚洲色图欧美制服丝袜另类第一页| 国产精品v片在线观看不卡| 97精品在线视频| 亚洲人成在线观看| 91久久夜色精品国产网站| 欧美亚洲视频一区二区| 国内揄拍国内精品少妇国语| 亚洲欧洲xxxx| 高清一区二区三区四区五区| 国产精品中文字幕久久久| 色噜噜久久综合伊人一本| 国产ts一区二区| 国产欧美韩国高清| 一区二区三区www| 国产精品 欧美在线| 欧美成人亚洲成人| 欧美性xxxx极品hd欧美风情| 亚洲一区二区免费| 国产精品人人做人人爽| 色悠悠国产精品| 日韩av影视在线| 欧美日韩另类视频| 久久好看免费视频| 日韩网站免费观看| 国产欧美一区二区白浆黑人| 亚洲最大av网| 18一19gay欧美视频网站| 揄拍成人国产精品视频| 亚洲国产三级网| 国产成人精品最新| 亚洲精品欧美日韩| 成人乱人伦精品视频在线观看| 欧美裸体xxxx极品少妇软件| 精品视频在线观看日韩| 欧美专区在线观看| 亚洲精美色品网站| 97在线看免费观看视频在线观看| 26uuu日韩精品一区二区| 亚洲精品久久久久中文字幕欢迎你| 国产精品成人观看视频国产奇米| 国产精品自拍网| 精品国产一区二区三区久久久| 国产一区二区三区视频在线观看| 亚洲成人在线视频播放| 亚洲欧美日韩中文在线制服| 久久久极品av| 亚洲天堂男人的天堂| 国产精品99久久久久久白浆小说| 国产精品高清网站| 一区二区三区黄色| 精品视频在线观看日韩| 欧美电影在线观看| 亚洲欧美另类中文字幕| 97精品在线视频| 欧美最顶级丰满的aⅴ艳星| 国产精品视频专区| 欧美激情欧美狂野欧美精品| 91精品国产亚洲| 在线亚洲男人天堂| 日韩av影视综合网| 亚洲娇小xxxx欧美娇小| 亚洲肉体裸体xxxx137| 国产欧美日韩中文| 欧美日韩国产在线看| 亚洲人成毛片在线播放| 亲子乱一区二区三区电影| 成人精品aaaa网站| 亚洲激情视频在线播放| 欧美成aaa人片在线观看蜜臀| 午夜精品久久久久久久99热浪潮| 国产视频精品免费播放| 91亚洲精品在线| 成人黄色免费在线观看| 最近免费中文字幕视频2019| 日韩av一区在线观看| 91免费综合在线| 中文字幕自拍vr一区二区三区| 亚洲精品网站在线播放gif| 日本欧美一级片| 日韩欧美在线视频免费观看| 久久中文字幕在线视频| 日韩性生活视频| 日本高清+成人网在线观看| 欧美成人性生活| 成人精品一区二区三区电影黑人| 日韩成人中文电影| 日韩av最新在线| 色综合久久精品亚洲国产| 国产精品一区=区| 亚洲一区二区三区在线免费观看| 91国产视频在线| 亚洲欧美国内爽妇网| 国产精品夫妻激情| 色偷偷91综合久久噜噜| 亚洲色图色老头| 日韩在线观看电影| 亚洲欧美日韩国产中文专区| 91影院在线免费观看视频| 日韩成人在线网站| 国产亚洲欧洲高清一区| 亚洲成人久久电影| 欧美性69xxxx肥| 久久久爽爽爽美女图片| 中日韩美女免费视频网站在线观看| 国语自产精品视频在线看一大j8| 国产一区香蕉久久| 97视频在线观看成人| 92版电视剧仙鹤神针在线观看| 久久精品国产清自在天天线| 亚洲天堂久久av| 国产日韩欧美成人| 亚洲国产欧美一区二区三区久久| 一个人看的www欧美| 97成人精品区在线播放| 国产精品高清在线观看| 久久精品国产久精国产思思| 欧美日韩亚洲视频一区| 久久这里有精品视频| 亚洲综合日韩在线| 色偷偷av亚洲男人的天堂| 最近2019免费中文字幕视频三| 91精品国产综合久久香蕉| 亚洲国产日韩欧美在线图片| 久久精品久久久久久国产 免费| 亚洲аv电影天堂网| 97人人爽人人喊人人模波多| 欧美日韩在线视频首页| 色综合老司机第九色激情| 久久99久久99精品中文字幕| 欧美精品做受xxx性少妇| 日韩一区视频在线| 亚洲永久在线观看| 懂色av一区二区三区| 国产精品成人一区二区三区吃奶| 国产精品伦子伦免费视频| 亚洲天堂av高清| 国产精品视频在线播放| 欧美日韩性生活视频| 国产成人一区二区三区| 中文国产亚洲喷潮| 亚洲直播在线一区| 成人欧美一区二区三区黑人孕妇| 亚洲精品99久久久久中文字幕| 久久人人爽人人爽人人片亚洲| 另类专区欧美制服同性| 亚洲国产小视频在线观看| 中文字幕一精品亚洲无线一区| 成人激情视频在线播放| 久久久久久九九九| 亚洲日本欧美日韩高观看| 日韩女在线观看| 欧美理论电影网| 国产亚洲美女久久| 91久久精品久久国产性色也91| 久久99国产精品久久久久久久久| 亚洲女人初尝黑人巨大| 亚洲欧美精品中文字幕在线| 欧美另类老肥妇| 成人精品视频在线|