我在尝试将数据集合发送到我们的服务时收到错误。但是,如果我只将一个项目添加到集合中,那么它会产生罚款。一旦我添加了多个项目,我就会收到以下错误
NetDataContractSerializer不支持使用类型'SmartTrade.Shared.Common.PaymentTerm'作为只获取集合。请考虑使用CollectionDataContractAttribute属性或SerializableAttribute属性标记类型,或者向属性添加setter。
因此,需要注意的关键是我可以使用单个项目发送集合(IList<>)。我已将MaxReceivedMessageSize和MaxArrayLength增加到我认为更合理的范围。
任何人都可以帮助我吗
答案 0 :(得分:3)
最后我解决了这个问题。其中一个基类中只有一个属性,它只有一个getter属性,并且没有setter属性。所以我不得不添加一个setter属性
答案 1 :(得分:3)
添加无意义的setter的另一种方法是将属性标记为序列化忽略。
这可以通过使用System.Runtime.Serialization.IgnoreDataMemberAttribute
示例:
public class Whatever
{
[IgnoreDataMember] // this won't be serialized now
public List<string> Things
{
get { return _things; }
}
}