我有一个WCF客户端需要生成包含此XML片段的请求:
<reason xsi:nil="true" nullFlavor="NA" typeCode="RSON" />
架构由服务器确定,不受我的控制。生成的代理代码具有reason元素的类,其中包含(以及其他)属性nullFlavor
和typeCode
。代理使用XmlSerializer。
如何生成这样的片段?仅当相应的成员为null时,XmlSerializer才会发出xsi:nil
属性。如果它为null,则它不能很好地具有将作为属性发出的属性!
答案 0 :(得分:1)
这是XmlSerializer的已知限制。您可以通过巧妙地使用IXmlSerializable接口并手动发出XML来解决这个问题 - 遗憾的是,我所知道的并不是一个干净的解决方案。
答案 1 :(得分:1)
这是我用于那些仍在努力解决这个问题的人的解决方案。这有点像黑客,但它的工作原理。关闭nillable并添加和属性如下
[XmlAttributeAttribute( AttributeName = "nil", Namespace = "http://www.w3.org/2001/XMLSchema-instance" )]
public bool NillAtt
{
get
{
return this.nillAtt;
}
set
{
nillAtt = value;
}
}