WCF和自定义集合序列化

时间:2012-12-11 12:53:51

标签: .net wcf serialization collections datacontract

我确定我不是第一个提出这个问题的人,但我在SO和Google中找不到答案......

我有以下自定义集合:

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

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

现在,我使用WCF传输ProductsCollection的实例...问题是WCF无法正确传输我的自定义属性CategoryId。它总是0(默认为int)。

http://msdn.microsoft.com/en-us/library/aa347850.aspx他们说CollectionDataContract应该解决它,并且集合将被序列化到我的特定集合而不是ArrayOfProduct。

我错过了什么吗?

如果使用DataContract序列化程序无法实现,是否可以为我的特定类编写某种MyCustomContract序列化程序,以便根据需要对我的集合进行序列化/反序列化?

由于

1 个答案:

答案 0 :(得分:2)

DataContractSerializer(默认为WCF)仅序列化集合项,但没有额外的属性。

请参阅此answer了解解决方法。