WCF集合數據契約相關定制方法詳解
作者:佚名
WCF集合數據契約的相關名稱與命名空間可以通過CollectionDataContractAttribute的相關屬性來進行定制。在這里將會對此進行詳細介紹。
WCF集合數據契約的定制方法在實際操作中是一個比較基礎的應用技術。我們可以使用CollectionDataContractAttribute的下列屬性來指定WCF集合數據契約的相關名稱及命名空間:#t#
Name屬性來指定集合數據契約的名稱(如果沒有使用此屬性,將使用集合類型的名稱)
Namespace屬性來指定其命名空間
ItemName 屬性來指定循環元素的名稱
針對字典集合還可以用KeyName和ValueName來指定鍵和值的名稱
WCF集合數據契約示例所示:
- [CollectionDataContract(Name = "telephones", ItemName = "telephone",
- KeyName = "Index", ValueName = "Number")]
- public class MyDictionary : Dictionary< int, object>
- {
- public new Dictionary< int,object>.Enumerator GetEnumerator()
- {
- Dictionary< int, object> innerObject = new Dictionary< int, object> {
- { 1, "010-82371234" },
- { 2, "021-56781234" } };
- return innerObject.GetEnumerator();
- }
- }
此類將被序列化成:
- < telephones xmlns:i=http://www.w3.org/2001/XMLSchema-instance
xmlns="http://schemas.datacontract.org/2004/07/WCFTestSerializer">- < telephone>
- < Index>1< /Index>
- < Number xmlns:d4p1=http://www.w3.org/2001/XMLSchema
i:type="d4p1:string">010-82371234< /Number>- < /telephone>
- < telephone>
- < Index>2< /Index>
- < Number xmlns:d4p1=http://www.w3.org/2001/XMLSchema
i:type="d4p1:string">021-56781234< /Number>- < /telephone>
- < /telephones>
對于定制WCF集合數據契約來說,前面所述的非定制數據契約的集合等價規則將失效。所以要盡量避免使用CollectionDataContractAttribute。
責任編輯:曹凱
來源:
博客園