第二十四章 執行時序列化

2022-02-06 09:42:14 字數 1130 閱讀 8223

反序列化的時候,格式化器會通過呼叫assembly.load方法引導程式集,如果在序列化的時候用的是loadfrom載入乙個程式集,很可能會導致兩個程式集不匹配,匯出錯誤.

型別需要新增serialzable屬性才能序列化.而且這個屬性不能被繼承.此標記可用於class,struct,enum,delegate.後兩個預設是可序列化的,可不加標記.

如果在序列化乙個物件時,這個物件所引用的某個成員,不可序列化,會丟擲異常.

可以將這些屬性新增到方法上,在序列化和反序列化的時候使用.

system.runtime.serialization.ondeserializedattribute  如果將物件圖中的物件應用於某方法,則應指定在反序列化該物件圖後立即呼叫該方法

ondeserializingattribute當將物件圖應用某方法時,指定反序列化物件時呼叫的方法等

在新版本中新增了新字段,會導致反序列化之前的資料時出錯,可以對新新增的字段使用system.runtime.serialization.optionalfieldattribute 指定序列化流中可以缺少乙個字段,這樣 system.runtime.serialization.formatters.binary.binaryformatter  和 system.runtime.serialization.formatters.soap.soapformatter 就不會引發異常

如果型別的某個欄位不需要序列化,可以新增nonserialized屬性.這個屬性會被派生型別繼承.

通過反射查詢欄位和字段對應的值.

在反序列化的時候,根據流中型別名稱,找到對應的型別type,呼叫getuninitiatedobject方法,分配物件記憶體,但不會呼叫建構函式.然後對對應的字段讀值賦值.

serializationinfo.settype設定要序列化為某種型別

iobjectreference 指示當前介面實施者是對另乙個物件的引用,反序列化時返回要反序列化成的型別的例項.

第二十四章 職責鏈模式

職責鏈模式 chain of responsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。注意 乙個請求極有可能到了鏈末都得不到處理,或者因為沒有正確配置而得不到處理。created b...

第二十四章 內家罡勁!

第一層次,佛宗 道家,包括我內家拳,都是內勁!而第二層次,佛宗為 佛元 這道家為 先天真元 那我這內家拳勁力就取名為 內家罡勁 滕青山感覺得到,在全身每一處,細微之細胞深處潛伏的絲絲罡勁!滕青山一揮右拳。咻!寸長的土黃色流光脫離滕青山拳頭,噗!的一聲,在旁邊草地上留下了乙個只有拳頭大小的深坑,一眼看...

高階shell程式設計筆記 第二十四章 別名

bash別名本質上是乙個簡稱 縮寫,這可避免鍵入過長的命令序列。例如 如果我們新增 alias lm ls l more 這一行到檔案 bashrc 檔案裡,然後每次在命令列鍵入lm將會自動被替換成ls l more。這使使用者在命令列不必鍵冗長的命令序列,也避免了記憶複雜的命令及眾多選項。設定al...