我正在将一些XML反序列化到我的班级,这一切都很好。我想要发生的是,如果XML不包含我的一个类属性的元素,而不是将该属性设置为null,我希望它等同于String.Empty。
例如,这是XML:
<Person>
<Title>Mr</Title>
<FullName>John Smith</FullName>
</Person>
这是班级:
[XmlRoot("Person")]
public sealed class PersonObject
{
[XmlElement("Title")]
public string NamePrefix { get; set; }
[XmlElement("FullName")]
public string FullName { get; set; }
[XmlElement("JobTitle")]
public string JobTitle { get; set; }
}
目前,如果我反序列化到此对象,JobTitle将设置为null。我希望将其设置为空字符串,就像我在XML中传递JobTitle一样,但将值设置为空。
是否可以使用序列化方法中的某种属性来执行此操作?
答案 0 :(得分:7)
你可以使用默认值的支持字段来执行此操作:
private string jobTitle = "";
[XmlElement("JobTitle")]
public string JobTitle { get {return jobTitle;} set {jobTitle = value;} }
或将其设置为默认构造函数:
public PersonObject()
{
JobTitle = "";
NamePrefix = "";
FullName = "";
}