Bug 14610 - The DataContractSerializer does not follow .NET "rules" regarding deserialization of collections
Summary: The DataContractSerializer does not follow .NET "rules" regarding deserializa...
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: WCF assemblies (show other bugs)
Version: master
Hardware: PC Windows
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2013-09-10 12:54 UTC by Jon Goldberger [MSFT]
Modified: 2013-09-28 21:00 UTC (History)
3 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments
test project (468.77 KB, application/zip)
2013-09-10 12:54 UTC, Jon Goldberger [MSFT]
Details

Description Jon Goldberger [MSFT] 2013-09-10 12:54:22 UTC
Created attachment 4827 [details]
test project

In .NET, instances of a type like the following will serialize/deserialize without a problem.

[DataContract]
public class SampleType {

  private List<String> _myStrings;
  public SampleType() {}

  [DataMember]
  public string Name { get; set; }

  [DataMember]
  public List<String> Strings {
    get {
      if (_myStrings == null) _myStrings = new List<string>();
      return _myStrings;
    }
  }
}
In Xamarin.Android, the lack of a setter on the "Strings" data member causes an InvalidOperationException: Failed to set value of type System.Collections.Generic.List'1[System.String] for property System.Collections.Generic.List'1[System.String] Strings"

According to MS documentation, .NET collections are deserialized by calling their Add method ^, and the setter is not used or required.

Note You need to log in before you can comment on or make changes to this bug.