我们正在连接到一个提供WSDL的外部系统,该WSDL希望将小数位提供2个小数位-即:
<collectionAmount>1000.00</collectionAmount>
但是,当我们的客户端序列化SOAP请求时,小数以单精度出现:
<collectionAmount>1000.0</collectionAmount>
我们已尝试使用元数据扩展名:
[MetadataType(typeof(amountSetRequestMetadata))]
public partial class amountSetRequest
{
internal sealed class amountSetRequestMetadata
{
[XmlIgnore]
public decimal collectionAmount { get; set; }
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 14, ElementName = "collectionAmount")]
public string collectionAmountString => "yay!";
}
}
amountSetRequest
是WSDL服务自动生成器生成的生成的部分类。输出XML没什么不同,因此这似乎对请求没有任何影响。
我们认为这相当普遍,但是找不到很多解决方法。我们已经看到了扩展基本XML序列化程序的解决方案。
以这种方式序列化SOAP请求的最干净的方法是什么?
public partial class amountSetRequest
{
private decimal _collectionAmount { get; set; }
public string collectionAmount {
get {return _collectionAmount.ToString("F2");}
set {_collectionAmount = decimal.Parse(value);}
}
}