自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF集合類型各種限制于規(guī)則介紹

開發(fā) 開發(fā)工具
我們今天主要就是通過對(duì)WCF集合類型的限制要求,以及一些更高級(jí)的規(guī)則制度來對(duì)此方面做一個(gè)詳細(xì)的介紹,希望對(duì)大家有所幫助。

WCF開發(fā)插件中,有很多內(nèi)容值得我們?nèi)ド钊氲难芯?。我們需要在不斷的?shí)踐中去積累應(yīng)用技巧,來滿足我們的應(yīng)用需求。在這里我們就為大家介紹一下其中一個(gè)比較基礎(chǔ)的知識(shí),WCF集合類型的相關(guān)概念。#t#

WCF集合類型的要求限制

不是所有的集合類型都可以在WCF中使用,只有滿足以下要求才可以使用:

該集合類型有一個(gè)缺省的構(gòu)造函數(shù)

該集合類型有一個(gè)名為Add的方法

這是因?yàn)樵诜葱蛄谢项愋蜁r(shí),WCF框架首先調(diào)用該集合類型的無參數(shù)的構(gòu)造函數(shù),然后通過非靜態(tài)的Add方法來將循環(huán)元素增加到集合中。所以以上限制主要是針對(duì)反序列化而設(shè)定的。

WCF集合類型中的一些高級(jí)規(guī)則

WCF框架在序列化時(shí)支持集合的集合,也支持?jǐn)?shù)組的數(shù)組(交錯(cuò)數(shù)組),但不支持多唯數(shù)組。

字節(jié)數(shù)組和 XmlNode 數(shù)組是特殊的數(shù)組類型,將被視為基元,而不是集合。 序列化字節(jié)數(shù)組會(huì)產(chǎn)生單個(gè)包含一個(gè) Base64 編碼數(shù)據(jù)塊的 XML 元素,而不是為每個(gè)字節(jié)都生成一個(gè)單獨(dú)的元素。(筆者認(rèn)為這是為了性能的考慮才這么處理的。)

如果集合類型實(shí)現(xiàn)了IXMLSerializable接口,假設(shè)類型為MyType:IList<string>,IXMLSerializable{…},WCF框架將根據(jù)在數(shù)據(jù)契約中聲明的類型來進(jìn)行序列化,如果聲明的是集(接口)如IList<string>,那么該類型將被認(rèn)為是列表集合來序列化,如果聲明的是IXMLSerializable,那么將按照IXMLSerializable來進(jìn)行序列化,當(dāng)然需要將該類型加到KnowType類型列表中。如果聲明的是該類型本身(如MyType),那么將按照IXMLSerializable的規(guī)則來進(jìn)行序列化。

在對(duì)集合進(jìn)行序列化時(shí),將調(diào)用集合類的GetEnumerator 方法來得到集合的內(nèi)容,在反序列化時(shí)將首先調(diào)用該集合類型的無參數(shù)的構(gòu)造函數(shù),然后通過非靜態(tài)的Add方法來將循環(huán)元素增加到集合中。(注:雖然這與大家在MSDN的幫助文檔中看到的不同,認(rèn)為字典集合將調(diào)用get_Keys和get_Values,以及IList將調(diào)用索引器,但筆者使用VS2008驗(yàn)證時(shí)沒有得到以上方法被調(diào)用的結(jié)論,所以筆者認(rèn)為是MSDN文檔滯后或有誤,如果各位看官能得到和MSDN吻合的結(jié)論麻煩告訴一聲。)

如果集合類型同時(shí)應(yīng)用了Serialized屬性或?qū)崿F(xiàn)了ISerializable接口,WCF框架將忽略它們;但是如果集合類型不滿足集合類型要求(例如缺少Add)方法,那么將按照Serialized或ISerializable來處理;但如果你對(duì)該集合同時(shí)應(yīng)用了CollectionDataContract屬性而且又不滿足集合要求,那么將拋出InvalidDataContractException,而不是按照Serialized或ISerializable來處理。

不能向?qū)崿F(xiàn)了IXmlSerializable接口的類型使用CollectionDataContractAttribute屬性,否則會(huì)拋出InvalidDataContractException.向非集合應(yīng)用CollectionDataContractAttribute屬性以及非字典集合指定KeyName或者ValueName屬性也都將拋出此異常。

以上就是對(duì)WCF集合類型的相關(guān)介紹。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2009-11-09 14:15:17

WCF集合類型

2010-02-25 10:29:17

WCF Transac

2009-11-09 09:34:07

WCF集合

2009-11-09 13:47:22

WCF Stream操

2010-03-01 17:35:29

WCF協(xié)定

2009-12-22 09:48:58

WCF枚舉類型

2010-02-26 14:58:14

WCF單例模式

2009-12-22 18:29:10

WCF適配器

2010-02-25 14:39:03

WCF術(shù)語

2010-03-01 09:56:21

WCF自定義集合類型

2010-01-08 16:19:00

VB.NET類型單位命

2010-02-23 17:30:41

WCF部署于IIS

2009-11-05 15:00:26

WCF Stream

2009-12-08 18:31:58

WCF WEB

2009-12-22 11:29:27

WCF自定義集合類型

2010-02-24 12:41:58

WCF異常處理

2009-11-05 11:31:00

WCF綁定

2009-12-07 18:33:31

WCF Service

2009-11-09 17:30:20

WCF元數(shù)據(jù)

2009-11-09 17:55:13

WCF緩存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)