Ser*_*rge 5 c# xml-serialization xml-attribute
我有一个这样定义的类:
[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
Run Code Online (Sandbox Code Playgroud)
但是当我序列化它时,"version"不会出现在属性中(而"action"会出现).
出了什么问题?
XmlSerializer将被忽略,Version因为它没有set,因此它无法尝试反序列化它。也许相反:
[XmlAttribute(AttributeName = "version")]
public string Version {get;set;}
public Request() { Version = "1.0"; }
Run Code Online (Sandbox Code Playgroud)
string总体上这将具有相同的效果(尽管每个实例需要一个额外的字段 - 尽管所有"1.0"值都将是相同的实际string实例,通过interning ),但将允许您正确捕获正在反序列化的数据版本。
如果您不关心反序列化,那么也许只需添加一个 no-op set:
[XmlAttribute(AttributeName = "version")]
public string Version
{
get { return "1.0"; }
set { }
}
Run Code Online (Sandbox Code Playgroud)