【问题标题】:WCF and custom collections serializationWCF 和自定义集合序列化
【发布时间】:2012-11-29 00:58:17
【问题描述】:

我确定我不是第一个提出这个问题的人,但我没有在 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 序列化程序,以根据需要对我的集合进行序列化/反序列化?

谢谢

【问题讨论】:

    标签: .net wcf serialization collections datacontract


    【解决方案1】:

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

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

    【讨论】:

    • 嗯...这意味着我必须创建不从 ICollectionOfT 继承的“集合”并且没有其他解决方案?是否可以为我的特定类编写某种 MyCustomContract 序列化程序,根据需要对我的集合进行序列化/反序列化?
    • 你也可以用XmlSerializer,不过好像也不好。
    • 是的,XmlSerializer 不是一个选项。
    猜你喜欢
    • 2016-10-28
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多