[ C# ] 物件序列化與反序列化

在寫論文系統時,對於字卡需要有儲存的讀取的功能

所以在結構上,字卡就不單單只能是控制項的型態

為能達到讀存的效果,我的作法跟想法就是把字卡結構化

再利用序列化反序列化的方式作讀存。

以下就筆記一下序列化和反序列化的作法:

================================================

[ 序列化 ]

 

序列化的對象可為 class、struct、enum 和 delegate
而序列化對象的內容均要是可序列化才行
由於論文系統是以 class 為物件,這邊就已 class 作為舉例

圖片

如上圖,在要序列化的 class 上加上 [Serializable] 讓此物件為可序列化目標
將物件設定為可序列化目標後,即可將物件以序列化的方式作存檔
以下圖為例:

1. 先開啟串流 (FileStream) 建立檔案

2. 宣告一個二進為序列化 Formatter

3. 使用方法 Serialize 將序列化目標指定至檔案作寫入存檔

( 圖中 CardMainList 為 List<T> 型態的序列化目標 )

圖片

 

[ 反序列化 ]

 

顧名思義,將序列化目標所存的檔案,透過反序列化的方式
轉換回其序列化目標,上面例子中,序列化的目標為 CardMainList
則我們反序列化後的物件格是即為 CardMainList。
如下圖為讀檔後反序列化的步驟:

1. 開啟串流 ( FileStream ) 讀檔

2. 宣告一個二進為序列化 Formatter

3. 反序列化讀入的串流,並回存給相對應格式的目標( 物件 )

圖片

以上,一個簡單的二進位序列化讀存功能就完成了。

Done!

p.s. 附上參考資料,以及感謝黃大師教導如何使用序列化。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s