原文地址:點擊打開鏈接
DataContractSerializer 類
使用提供的數據協定,將類型實例序列化和反序列化為 XML 流或文檔。 無法繼承此類。
命名空間: System.Runtime.Serialization
. dll 中)
備註
使用DataContractSerializer 類別可以將類型實例序列化和反序列化為XML 流或文件。 透過將 DataContractAttribute 特性套用至類別,而將DataMemberAttribute 特性套用至類別成員,可以指定要序列化的屬性和欄位。
字面意思來理解就是:資料契約序列化,本文主要講解用DataContractSerializer 序列化與反序列化.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
|
DataContractAttribute從應用在DataContractAttribute上的AttributeUsageAttribute特性看,該特性只能用於枚舉、類別、結構體而不能應用於接口,從關鍵字sealed知道DataContractAttribute是不可被繼承的。 AllowMutiple屬性為False,表示一個資料型別上只能套用一個DataContractAttribute特性。
從上面對DataContractAttribute定義看出DataContractAttribute僅包含5個屬性成員,其中Name和Namespace表示資料契約的名稱和命名空間,IsReference表示在進行序列化的時候是否保持物件現有的引用結構,該屬性預設值為False。
資料契約成員採用顯示選擇機制,也就是說,應用了DataContractAttribute特性的資料類型的屬性/欄位不會自動產生契約的資料成員,而只有那些應用了DataMemberAttribute特性的屬性/欄位才屬於資料契約的成員。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|
從上面應用在DataMemberAttribute上的因為只有這兩種元素才是「數據」成員。 4個屬性分別表示如下的意義。
Name:資料成員的名稱,預設為欄位或屬性的名稱。Order:對應的資料成員在最終序列化的XML中出現的位置,Order值越小越考前,預設值為-1.
IsRequired:顯示屬性成員是否是必須的成員。預設值為false,表示該成員是可以缺省的。
EmitDefaultValue :取得或設定一個值,該值指定是否對正在被序列化的欄位或屬性的預設值進行序列化。如果應該在序列化流中產生成員的預設值,則為 true;否則為 false。 預設值為 true。
以上就是C# WCF DataContractSerializer 類別的內容,更多相關內容請關注PHP中文網(www.php.cn)!