成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET序列化和反序列化基礎知識總結

開發 后端
.NET序列化和反序列化的基礎學習需要明白和掌握什么基礎知識呢?下面我們就.NET序列化和反序列化的概念、存在的必要性以及簡單的實現方面向你介紹.NET序列化和反序列化的相關內容。

.NET序列化和反序列化的學習中都會涉及到什么概念呢?在我們學習之前其實還是要明白問什么會有.NET序列化,它存在的必要性是什么?是如何實現的呢?那么下面我們逐一介紹

.NET序列化的概念:

“序列化”可被定義為將對象的狀態存儲到存儲媒介中的過程。在此過程中,對象的公共字段和私有字段以及類的名稱(包括包含該類的程序集)都被轉換為字節流,然后寫入數據流。在以后“反序列化”該對象時,創建原始對象的精確復本。

一、.NET序列化和反序列化的必要性

1、將對象的狀態保持在存儲媒體中,以便可以在以后重新創建精確的副本;

2、通過值將對象從一個應用程序域發送到另一個應用程序域中。

例如,序列化可用于在 ASP.NET 中保存會話狀態并將對象復制到 Windows 窗體的剪貼板中。遠程處理還可以使用序列化通過值將對象從一個應用程序域傳遞到另一個應用程序域中。

二、如何實現.NET序列化和反序列化

1、要實現對象的序列化,首先要保證該對象可以序列化。而且,序列化只是將對象的屬性進行有效的保存,對于對象的一些方法則無法實現序列化的。實現一個類可序列化的最簡便的方法就是增加Serializable屬性標記類。如:

  1. [Serializable()]  
  2. public class MEABlock  
  3. {  
  4. private int m_ID;  
  5. public string Caption;  
  6.  
  7. public MEABlock()  
  8. {  
  9. ///構造函數  
  10. }  
  11. }  

即可實現該類的可序列化。

2、要將該類的實例序列化為到文件中?.NET FrameWork提供了兩種方法:

(1)XML序列化

使用 XmLSerializer 類,可將下列項序列化。

◆公共類的公共讀/寫屬性和字段

◆實現 ICollection 或 IEnumerable 的類。(注意只有集合會被序列化,而公共屬性卻不會。)

◆XmlElement 對象。

◆XmlNode 對象。

◆DataSet 對象。

要實現上述類的實例的序列化,可參照如下例子:

  1. MEABlock myBlock = new MEABlock();  
  2. // Insert code to set properties and fields of the object.  
  3. XmlSerializer mySerializer = new XmlSerializer(typeof(MEABlock));  
  4. // To write to a file, create a StreamWriter object.  
  5. StreamWriter myWriter = new StreamWriter("myFileName.xml");  
  6. mySerializer.Serialize(myWriter, MEABlock); 

需要注意的是XML序列化只會將public的字段保存,對于私有字段不予于保存。生成的XML文件格式如下:

  1.  
  2. Test  
  3.  

對于對象的反序列化,則如下:

  1. MEABlock myBlock;  
  2. // Constructs an instance of the XmlSerializer with the type  
  3. // of object that is being deserialized.  
  4. XmlSerializer mySerializer = new XmlSerializer(typeof(MEABlock));  
  5. // To read the file, creates a FileStream.  
  6. FileStream myFileStream = new FileStream("myFileName.xml", FileMode.Open);  
  7. // Calls the Deserialize method and casts to the object type.  
  8. myBlock = (MEABlock)mySerializer.Deserialize(myFileStream) 

(2)二進制序列化

與XML序列化不同的是,二進制序列化可以將類的實例中所有字段(包括私有和公有)都進行序列化操作。這就更方便、更準確的還原了對象的副本。
要實現上述類的實例的序列化,可參照如下例子:

  1. MEABlock myBlock = new MEABlock();  
  2. // Insert code to set properties and fields of the object.  
  3. IFormatter formatter = new BinaryFormatter();  
  4. Stream stream = new FileStream(  
  5. "MyFile.bin",FileMode.Create,FileAccess.Write, FileShare.None);  
  6. formatter.Serialize(stream, myBlock);  
  7. stream.Close(); 

對于對象的反序列化,則如下:

  1. IFormatter formatter = new BinaryFormatter();  
  2. Stream stream = new FileStream("MyFile.bin",   
  3.  
  4. FileMode.Open,FileAccess.Read, FileShare.Read);  
  5. MEABlock myBlock = (MEABlock) formatter.Deserialize(stream);  
  6. stream.Close();  

三、如何變相實現自定義可視化控件的.NET序列化和反序列化

對于WinForm中自定義控件,由于繼承于System.Windows.Form類,而Form類又是從MarshalByRefObject繼承的,窗體本身無法做到序列化,窗體的實現基于Win32下GUI資源,不能脫離當前上下文存在。

當然可以采用變通的方法實現控件的序列化。這里采用的是記憶類模型。定義記憶類(其實就是一個可序列化的實體類)用于記錄控件的有效屬性,需要序列化控件的時候,只需要將該控件的實例Copy到記憶類,演變成序列化保存該記憶類的操作。

.NET反序列化是一個逆過程。將數據流反序列化成為該記憶類,再根據該記憶類的屬性生成控件實例。而對于控件的一些事件、方法則可以繼續使用。

.NET序列化和反序列化的基礎概念和簡單的實現過程就向你介紹到這里,希望對你了解和學習.NET序列化和反序列化有所幫助。

【編輯推薦】

  1. 走進C#基礎概念之事件
  2. 詳解C#中不同類的類型
  3. 淺談C#中標準Dispose模式的實現
  4. C#圖片處理的3種高級實用方法
  5. C# 4.0新特性:協變與逆變中的編程思想
責任編輯:仲衡 來源: 互聯網
相關推薦

2022-08-06 08:41:18

序列化反序列化Hessian

2009-09-09 16:21:13

.NET序列化基礎知識

2011-06-01 15:05:02

序列化反序列化

2009-08-24 17:14:08

C#序列化

2011-05-18 15:20:13

XML

2009-08-06 11:16:25

C#序列化和反序列化

2009-09-09 15:47:27

XML序列化和反序列化

2009-09-09 14:45:41

XML序列化和反序列化

2009-07-29 13:39:02

JSON序列化和反序列ASP.NET AJA

2019-11-20 10:07:23

web安全PHP序列化反序列化

2009-06-14 22:01:27

Java對象序列化反序列化

2009-08-25 14:24:36

C#序列化和反序列化

2023-12-13 13:49:52

Python序列化模塊

2018-03-19 10:20:23

Java序列化反序列化

2021-11-18 07:39:41

Json 序列化Vue

2009-08-25 14:43:26

C#序列化和反序列化

2011-06-01 14:50:48

2010-03-19 15:54:21

Java Socket

2012-04-13 10:45:59

XML

2011-06-01 14:26:11

序列化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线高清 | 国产成人在线一区二区 | 久久国产欧美日韩精品 | 激情视频网站 | 隔壁老王国产在线精品 | 亚洲国产91 | 国产三级精品三级在线观看四季网 | 日韩国产一区二区 | h视频免费在线观看 | 91av视频在线免费观看 | 精品免费视频一区二区 | 中文字幕在线播放第一页 | 在线观看黄色 | 国产在线精品一区 | 久久久久网站 | 免费av播放 | 国产美女黄色 | 91精品久久久 | 国产午夜精品一区二区三区嫩草 | 九九热国产精品视频 | 成人国产精品久久久 | 精品国产91亚洲一区二区三区www | 亚洲一区二区久久 | 免费在线观看av网站 | 国产情侣在线看 | 国产婷婷精品av在线 | 看av片网站 | 麻豆久久| 男人天堂网址 | 亚洲入口 | 国产极品粉嫩美女呻吟在线看人 | 6996成人影院网在线播放 | 日韩精品一区二区在线观看 | 一区二区中文 | 亚洲精品永久免费 | 国产在线看片 | 高清人人天天夜夜曰狠狠狠狠 | 2019精品手机国产品在线 | 色综合视频在线 | 羞羞视频网站免费观看 | 国产精品美女久久久久久不卡 |