【发布时间】:2017-01-09 08:52:30
【问题描述】:
我找不到没有 getter 的属性无法正确解析的原因,让我给你写一个例子:
对于 XML 格式
<request>
<job
mode="modefirst"
/>
<request>
我正在尝试使用属性将其反序列化为 POCO:
private ESomeEnum emode;
[XmlAttribute(AttributeName = "mode")]
public string Mode
{
set { ESomeEnum.TryParse( blah blah );
}
emode 在类构造函数中被设置为默认值,同时反序列化(System.Xml.Serialization 没有自定义类,只是在这里尝试简约)上面的 xml,永远不会调用 setter,但是当 property ' Mode' 包含一个 getter
get { return this.emode.ToString(); }
setter 在反序列化过程中实际上被命中并设置了正确的值。
为什么会出现这种情况?有什么原因吗?
【问题讨论】:
-
公共属性必须有 getter 和 setter 才能被序列化。见Why isn't my public property serialized by the XmlSerializer?。
标签: c# xml serialization