datacontractserializer 類
使用提供的資料協定,将類型執行個體序列化和反序列化為 xml 流或文檔。 無法繼承此類。
命名空間: system.runtime.serialization
程式集: system.runtime.serialization(在 system.runtime.serialization.dll 中)
備注
使用 datacontractserializer 類可以将類型執行個體序列化和反序列化為 xml 流或文檔。 通過将 datacontractattribute 特性應用于類,而将datamemberattribute 特性應用于類成員,可以指定要序列化的屬性和字段。
從字面意思來了解就是:資料契約序列化,本文主要是講解用datacontractserializer 序列化和反序列化.
datacontractattribute與datamenmberattribute
datacontractattribute
從應用在datacontractattribute上的attributeusageattribute特性看,該特性隻能用于枚舉、類、結構體而不能應用于接口,從關鍵字sealed知道datacontractattribute是不可被繼承的。allowmutiple屬性為false,表明一個資料類型上隻能應用一個datacontractattribute特性。
從上面對datacontractattribute定義看出datacontractattribute僅僅包含5個屬性成員,其中name和namespace表示資料契約的名稱和命名空間,isreference表示在進行序列化的時候是否保持對象現有的引用結構,該屬性預設值為false。
資料契約成員采用顯示選擇機制,也就是說,應用了datacontractattribute特性的資料類型的屬性/字段不會自動生成契約的資料成員,而隻有那些應用了datamemberattribute特性的屬性/字段才屬于資料契約的成員。
datamemberattribute
從上面應用在datamemberattribute上的attributeusageattribute特性來看,該特性隻能應用在字段和屬性上。因為隻有這兩種元素才是“資料”成員。4個屬性分别表示如下的含義。
name:資料成員的名稱,預設為字段或屬性的名稱。
order:相應的資料成員在最終序列化的xml中出現的位置,order值越小越考前,預設值為-1.
isrequired:表明屬性成員是否是必須的成員。預設值為false,表明該成員是可以預設的。
emitdefaultvalue :擷取或設定一個值,該值指定是否對正在被序列化的字段或屬性的預設值進行序列化。如果應該在序列化流中生成成員的預設值,則為 true;否則為 false。 預設值為 true。