c# Xml为什么不'
本文关键字:为什么不 Xml | 更新日期: 2023-09-27 18:18:16
我有一个这样定义的类:
[XmlRoot(ElementName="request")]
public class Request
{
#region Attributes
[XmlAttribute(AttributeName = "version")]
public string Version
{
get
{
return "1.0";
}
}
[XmlAttribute(AttributeName = "action")]
public EAction Action
{
get;
set;
}
#endregion
但是当我序列化它时,"version"没有出现在属性中(而"action"出现了)。
怎么了?
XmlSerializer
将忽略Version
,因为它没有set
,所以它无法尝试对反序列化它。也许相反:
[XmlAttribute(AttributeName = "version")]
public string Version {get;set;}
public Request() { Version = "1.0"; }
将具有相同的总体效果(尽管每个实例需要额外的string
字段-尽管所有"1.0"
值将是相同的实际string
实例,通过实习),但将允许您正确捕获反序列化的数据版本。
如果你不关心反序列化,那么也许只是添加一个无操作的set
:
[XmlAttribute(AttributeName = "version")]
public string Version
{
get { return "1.0"; }
set { }
}
必须设置一个空的setter。这是XmlAttribute的一个限制。
[XmlRoot(ElementName="request")]
public class Request
{
#region Attributes
[XmlAttribute(AttributeName = "version")]
public string Version
{
get
{
return "1.0";
}
set{}
}
[XmlAttribute(AttributeName = "action")]
public EAction Action
{
get;
set;
}
#endregion