如前所述,大多数属性必须同时具有getter和setter;主要的例外是列表-例如:
private readonly List<Foo> bar = new List<Foo>();public List<Foo> Bar {get { return bar; } } // works fine会很好的工作;但是,如果
XmlSerializer找到 传教士-它要求它是公开的;以下将 无法 正常工作:
public List<Foo> Bar {get; private set;} // FAIL它可能无法序列化的其他原因:
- 它与get和set(或
readonly
用于字段)不是公共的 - 它具有一个
[DefaultValue]
属性,并且具有该值 - 它有一个
bool ShouldSerializeFoo()
返回false 的公共方法 - 它具有一个
bool FooSpecified {get;set;}返回false 的公共属性或字段 - 它被标记
[XmlIgnore]
- 它被标记
[Obsolete]
这些都会导致它无法序列化



