如何控制 C# SOAP 代理中的属性序列化 (xsd.exe)

How do I control the serialization of properties in C# SOAP Proxy (xsd.exe)

我在 C# 应用程序 (.NET Framework 4.8) 中使用 SOAP Web 服务,该应用程序使用通过 xsd.exe 从服务的 XSD 生成的代理。

在XSD中有一个需要货币金额的字段,定义如下:

<xs:simpleType name="HHAmountType">
    <xs:restriction base="xs:decimal">
        <xs:pattern value="(\+|\-)?\d{1,7}\.\d\d"/>
    </xs:restriction>
</xs:simpleType>

如果我提供诸如“0”之类的值,服务将抛回异常。从查看 XML 架构来看,它看起来应该是“0.00”,并且与描述该字段的其他一些文档相匹配。我无法解决的是如何处理生成的 class 以允许我始终以小数点后两位输出该数字。 class 提供了一个 属性 ,它是一个小数,我将其设置为一个值(在本例中为 0),目前没有向其添加其他属性。

/// <remarks/>
public decimal Amount {
    get {
        return this.amountField;
    }
    set {
        this.amountField = value;
    }
}

任何人都可以引导我在允许我这样做的任何属性等方向上,或者我需要将其更改为字符串 属性 并自己处理该格式吗?

尝试以下操作:

      private decimal _amountField { get; set; }
        public string Amount
        {
            get
            {
                return this._amountField.ToString("D2");
            }
            set
            {
                this._amountField = decimal.Parse(value);
            }
        }