5

我在尝试将数据集合发送到我们的服务时遇到错误。但是,如果我只向集合中添加一个项目,那么它可以正常工作。一旦我添加了一个以上的项目,我就会收到以下错误

NetDataContractSerializer 不支持将类型“SmartTrade.Shared.Common.PaymentTerm”用作 get-only 集合。考虑使用 CollectionDataContractAttribute 特性或 SerializableAttribute 特性来标记类型,或者向属性添加设置器。

所以这里要注意的关键是我可以将集合 (IList<>) 与单个项目一起发送。我已将 MaxReceivedMessageSize 和 MaxArrayLength 增加到我认为更合理的值。

有人可以帮我吗

4

2 回答 2

3

最后我解决了。在其中一个基类中有一个属性,它只有一个 getter 属性,没有一个 setter 属性。所以我不得不添加一个 setter 属性

于 2012-03-20T18:33:42.653 回答
3

添加无意义的设置器的替代方法是标记要被序列化忽略的属性。

这可以通过装饰你的财产来完成System.Runtime.Serialization.IgnoreDataMemberAttribute

例子:

public class Whatever
{
    [IgnoreDataMember] // this won't be serialized now
    public List<string> Things
    {
        get { return _things; }
    }
}
于 2015-06-18T13:52:27.030 回答