C 型別定義變化不會影響反序列化的幾種情況

2021-10-14 01:45:51 字數 425 閱讀 1138

c#物件持久化的步驟為:使用諸如binaryformatter型別,把型別例項(物件)序列化到流中,接著就可以把流儲存到二進位制檔案。下次需要物件時,可以把這個二進位制檔案讀到流中並反序列化為乙個object物件,然後轉換為原來的物件。

如果物件的型別在序列化後做了修改,那麼反序列化為新型別物件的情況如何呢?筆者測試了如下幾種情況,反序列化均是成功的:

1)增加成員字段、增加屬性、增加索引、增加函式、增加介面繼承和實現。

2)刪除屬性、刪除索引、刪除函式、刪除介面及其實現。

3)刪除原有字段。

上述第3)有點意思了:原有的成員字段肯定被持久化了,反序列化並轉換為新的型別物件後,可以正常使用。俺的理解是,刪除原有字段,相當於是原有類的乙個基類,反序列化則等價於在記憶體中構建了乙個原有的型別物件,該物件轉換為基類指標使用。

摘自長沙三毛的csdn部落格:

C 匿名型別序列化 反序列化

現在提倡前後端分離,分離後服務全部採用介面的方式給前端提供服務,當我們處理自定義查詢時必定會多表查詢,而處理多表查詢時我們又懶的去建view model,建的過多專案也凌亂的很,所以在dao層處理自定義查詢時採用匿名型別返回json。listodata new list odata.add new ...

Python 序列化 反序列化自定義型別

內建json模組對於python內建型別序列化的描述 extensible json encoder for python data structures.supports the following objects and types by default python json dict obj...

序列化和反序列化 C 序列化與反序列化。

序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...