物件的序列化

2021-06-16 18:31:03 字數 1168 閱讀 2101

序列化就是將物件轉換為二進位製流的過程。

物件序列化:把乙個物件轉換成二進位製流的過程就叫物件序列化。

序列化是將物件轉換成易於傳輸的形式的過程。

二進位制序列化:

可以將序列化定義為乙個將物件狀態儲存到儲存介質的過程。在這個過程中,物件的公共欄位和私有字段以及類(包括含有該類的程式集)的名稱,將轉換成位元組流,而位元組流接著將寫入資料流。隨後對該物件進行反序列化時,將建立原始物件的準確轉殖。

在物件導向的環境中實現序列化機制時,必須多在易用性與靈活性之間做出權衡。很大程度上,這個過程可以自動完成,但前提是您對該過程擁有足夠的控制權。例如,如果簡單的二進位制序列化不足,或者可能有特定原因決定需要對類中的哪些字段進行序列化,可能就會出現這種情況。以下章節說明了隨 .net framework 一起提供的可靠序列化機制,並強調了根據需要自定義該過程所能使用的一些重要功能。

關於二進位制序列化需要注意的事項:

1.要序列化的型別必須標記為:[serializable]

2.該型別的父類也必須標記為:[serializable]

3.該型別中的所有成員的型別也必須標記為:[serializable]

4.序列化只會對類中的

字段序列化。(只能序列化一些狀態資訊。)

5.不建議使用自動屬性。(每次生成的字段都可能不一樣,影響反序列化)

為什麼要序列化?

•將乙個複雜的物件轉換流,方便我們的儲存與資訊交換

序列化的應用:asp.net  viewstate、wcf、.netremoting、asp.netcache 、集群等。

將物件持久化儲存,磁碟、資料庫

將物件複製到剪貼簿

將物件通過網路傳輸

將物件備份(深拷貝。)

序列化步驟:

1.匯入命名空間

2.標記[serializable]

3.建立乙個二進位制序列化器:

binaryformatter bf=…..;

4.建立乙個檔案流。

5..bf.serialize(stream,物件);

反序列化步驟:

1.匯入命名空間

2.建立乙個二進位制序列化器:

binaryformatter bf;

3.建立檔案流:

4.執行反序列化:

object obj=bf.deserialize(stream);

物件序列化 反序列化

必須新增引用 using system.io using system.runtime.serialization using system.runtime.serialization.formatters.binary 方法 region 物件序列化 物件序列化 任意物件 字串 public st...

物件 序列化 反序列化

public class eventmessage 資訊提示類 型別1 操作日誌2 安全日誌 標題 內容 icon型別 url 執行script指令碼字串 需加 public static void messagebox int m type,string m title,string m body...

物件序列化

using system using system.io using system.diagnostics using system.reflection using system.runtime.serialization using system.runtime.serialization.fo...