Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WCF和自定义集合序列化_.net_Wcf_Serialization_Collections_Datacontract - Fatal编程技术网

.net WCF和自定义集合序列化

.net WCF和自定义集合序列化,.net,wcf,serialization,collections,datacontract,.net,Wcf,Serialization,Collections,Datacontract,我肯定我不是第一个问这个问题的人,但我在SO和谷歌上都没有找到答案 我有以下自定义集合: [Serializable] public class BaseCollection<T>: ICollection<T> { } [CollectionDataContract] [Serializable] ProductsCollection : BaseCollection<Product> { [DataMember] public int C

我肯定我不是第一个问这个问题的人,但我在SO和谷歌上都没有找到答案

我有以下自定义集合:

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

[CollectionDataContract]
[Serializable]
ProductsCollection : BaseCollection<Product>
{
    [DataMember]
    public int CategoryId {get;set;}
}
[可序列化]
公共类基类集合:ICollection
{
}
[收集数据合同]
[可序列化]
ProductsCollection:BaseCollection
{
[数据成员]
public int CategoryId{get;set;}
}
现在,我使用WCF传输
ProductsCollection
的实例…问题是WCF没有正确传输我的自定义属性CategoryId。它始终为0(默认为int)

他们说,
CollectionDataContract
应该解决这个问题,集合将被序列化到我的特定集合,而不是ArrayOfProduct

我是不是错过了什么

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


谢谢

DataContractSerializer(这是WCF的默认设置)只序列化集合项,而不序列化额外的属性


请参阅此解决方案。

Hm…这意味着我必须创建我的“集合”,而不是从ICollectionSoft继承,并且没有其他解决方案?是否可以为我的特定类编写某种类型的MyCustomContract序列化程序,根据需要序列化/反序列化我的集合?您也可以使用
XmlSerializer
,但这似乎也不好。是的,XmlSerializer不是一个选项。