这是我多年来苦苦挣扎的工作,所以我以为我会在某个地方记录下来。(提出和回答问题的道歉。)
(C#.net 2.0)我有一个正在由XmlSerializer进行序列化的类,我添加了一个新的公共属性,但是该属性未包含在输出XML中。
我在任何地方都找不到文档,但公共属性必须有一个集合以及要序列化的获取!我猜这是因为它假设如果要序列化,那么您将从同一个文件中反序列化,因此仅序列化同时具有set和get的属性。
如前所述,大多数属性必须同时具有getter和setter;主要的例外是列表-例如:
private readonly List<Foo> bar = new List<Foo>(); public List<Foo> Bar {get { return bar; } } // works fine
会很好的工作;但是,如果XmlSerializer 找到 传教士-它要求它是公开的;以下将 无法 正常工作:
XmlSerializer
public List<Foo> Bar {get; private set;} // FAIL
它可能无法序列化的其他原因:
readonly
[DefaultValue]
bool ShouldSerializeFoo()
bool FooSpecified {get;set;}
[XmlIgnore]
[Obsolete]
这些都会导致它无法序列化