我正在使用XmlSerializer.它将对象序列化很好,但客户端要求所需的空元素采用这种格式<star:Confirm/>.序列化器将序列化空元素,以便<star:Confirm></star:Confirm>有一种方法可以将其更改为序列化客户端所需的方式.
在尝试了不同的事情后,我偶然发现了解决方案.我把它设置XmlElementAttribute.IsNullable为真如前面的答案所示.
[System.Xml.Serialization.XmlElementAttribute(ElementName = "Confirm", IsNullable=true)]
public ConfirmType Confirm
{
get
{
return this.confirmField;
}
set
{
this.confirmField = value;
this.RaisePropertyChanged("Confirm");
}
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中设置确认类型时,我使用默认构造函数而不是将Confirm设置为null.
retval.ConfirmBODDataArea.Confirm = new ConfirmType();
Run Code Online (Sandbox Code Playgroud)
这序列化为 <star:Confirm/>