2012-12-11 116 views
1

我敢肯定,我不是第一個誰問這個問題,但我沒有發現我的答案在SO和谷歌...WCF和自定義集合系列化

我有以下自定義收藏:

[Serializable] 
public class BaseCollection<T>: ICollection<T> 
{ 
} 

[CollectionDataContract] 
[Serializable] 
ProductsCollection : BaseCollection<Product> 
{ 
    [DataMember] 
    public int CategoryId {get;set;} 
} 

現在,我使用WCF轉讓ProductsCollection實例......問題是,WCF不正確地傳遞我的自定義屬性類別編號。它始終爲0(int的缺省值)。

http://msdn.microsoft.com/en-us/library/aa347850.aspx他們說CollectionDataContract應該解決它,集合將被序列化到我的特定集合,而不是ArrayOfProduct。

難道我失去了一些東西?

如果不可能DataContract序列化,是有可能寫出某種MyCustomContract串行對我的具體類,將serialiaze /根據需要反序列化我的收藏?

感謝

回答

2

DataContractSerializer(這是WCF默認)僅串行收集的物品,但沒有額外的屬性。

請參見本answer的解決方法。

+0

嗯...這意味着我必須建立我的「收藏」,並非來自繼承ICollectionOfT有沒有別的解決辦法?是否有可能爲我的特定類編寫某種MyCustomContract序列化器,以便根據需要序列化/反序列化我的集合? –

+0

你也可以使用'XmlSerializer',但看起來它也不好。 – metalheart

+0

是的,XmlSerializer不是一個選項。 –