如何控制 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);
}
}
我在 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);
}
}