WCF十进制到2十进制精度的字符串的序列化

问题描述 投票:0回答:1

我们正在连接到一个提供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请求的最干净的方法是什么?

c# wcf soap code-generation partial-classes
1个回答
0
投票
使用以下内容:

public partial class amountSetRequest { private decimal _collectionAmount { get; set; } public string collectionAmount { get {return _collectionAmount.ToString("F2");} set {_collectionAmount = decimal.Parse(value);} } }

© www.soinside.com 2019 - 2024. All rights reserved.