5

I am getting an error while trying to send an collection of data over to our service. If however I add only a single item to the collection then it works fines. As soon as I add more then one item I get the following error

The use of type 'SmartTrade.Shared.Common.PaymentTerm' as a get-only collection is not supported with NetDataContractSerializer. Consider marking the type with the CollectionDataContractAttribute attribute or the SerializableAttribute attribute or adding a setter to the property.

So the key thing to note here is that I can send the collection (IList<>) with a single item. I have increased the MaxReceivedMessageSize and the MaxArrayLength to what I think is more then reasonable.

Can anybody help me out here

2 Answers 2

3

Finally I worked it out. There was a property in one of the base class that only had a getter property and did not have a setter property. So I had to add a setter property

Sign up to request clarification or add additional context in comments.

1 Comment

Could you please explain why setter property this is required?
3

An alternative to adding a pointless setter would be to mark the property to be ignored by serialization.

This can be done by decorating your property with System.Runtime.Serialization.IgnoreDataMemberAttribute

Example:

public class Whatever
{
    [IgnoreDataMember] // this won't be serialized now
    public List<string> Things
    {
        get { return _things; }
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.