日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

WCF學(xué)習(xí)筆記之序列化

 昵稱10504424 2013-07-17

DataContractAttribute 與 DataMenberAttribute

 

DataContractAttribute該特性只能用于枚舉、類和結(jié)構(gòu)體,而不能用于接口;又因為DataContractAttribute是不可以被繼承的,所以要所有作為數(shù)據(jù)契約的類型自身必須有這么一個特性;而且一個類型上只能有一個DataContractAttribute特性;(因為DataContractAttribute的AttributeUsage中AllowMultiple屬性為False);DataContractAttribute僅僅包含三個屬性成員;分別為Name(數(shù)據(jù)契約名稱)、Namespace(命名空間)、IsReference(表示在進(jìn)行序列化的時候是否保持對象現(xiàn)有的結(jié)構(gòu),該屬性默認(rèn)值為False);

 

DataMenberAttribute該特性只能應(yīng)用在字段和屬性上;其有四個屬性:分別為Name(數(shù)據(jù)成員的名稱,默認(rèn)為字段或?qū)傩缘拿Q)、Order(相應(yīng)的數(shù)據(jù)成員在最終序列化的XML中出現(xiàn)的位置,Order值越小越靠前默認(rèn)值為-1)、IsRequired(表明屬性成員是否是必需的成員,默認(rèn)值為false)、EmitDefaultValue(表明在數(shù)據(jù)成員的值等級于默認(rèn)值的情況下,是否還需要將其序列化到最終的XML中,默認(rèn)值為true;表示默認(rèn)值會參與序列化)

 

數(shù)據(jù)契約和數(shù)據(jù)成員序列化只跟是否應(yīng)用的DataContractAttribute 與 DataMenberAttribute特性有關(guān);與類型或成員的限制修飾符無關(guān)(public,private等);DataContractSerializer具有一個只讀的MaxItemsInObjectGraph屬性表示允許被序列化或反序列化對象的數(shù)量上限(可以防止黑客通過生成大容量的數(shù)據(jù)頻繁地對服務(wù)器發(fā)送請求,最終導(dǎo)致服務(wù)器不堪重負(fù)而崩潰);[P180]

 

已知類型

由于托管對象的結(jié)構(gòu)是通過CLR類型來描述,所以DataContractAttribute在進(jìn)行序列化的時候必須先確定所有對象的真實類型;NET的類型可以分為聲明類型和真實類型兩種;比如類型實現(xiàn)的接口或抽象類,當(dāng)我們使用基于接口或抽象類創(chuàng)建的DataContractAttribute去序列化一個實現(xiàn)了該接口或繼承該抽象類的實例時,往往會因為無法識別對象的真實類型造成不能正常序列化;方法一:可以在數(shù)據(jù)契約中聲明其類型[KnowType(typeof(類型))];方法二:可以采用配置[P189];方法三:可以采用ServiceKnownTypeAttribute特性;[P191]

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多