我正在使用来自第三方的SOAP Web服务。我使用XSD.exe
工具生成了对象。问题是我需要发送XmlElement
我串行化。他们的服务引发了错误,因为它希望所有boolean
值都用1和0表示,而不是真和假。
我知道我可以使用这样的自定义序列化工具:IXmlSerializable Interface或者:Making the XmlSerializer output alternate values for simple types但是它们涉及我更改Xsd.exe
工具生成的代码并且很难维护每次都有升级。
我是否遗漏了某些东西,或者是否有另一种方式来实现我所寻找的目标?
答案 0 :(得分:0)
您可以让对象忽略bool值,而是使用不同的变量来显示它。例如:
[IgnoreDataMember, XmlIgnore]
public bool BoolProp { get; set; }
/// <summary>
/// XML serialized BoolProp
/// </summary>
[DataMember(Name = "BoolProp"]
[XmlElement(ElementName = "BoolProp"]
public int FormattedBoolProp
{
get {
return BoolProp ? 1 : 0;
}
set { BoolProp = value==1 }
}
这将使XML解析器忽略real属性,而是使用格式化的函数。
如果您不需要解析它,可以删除setter。