C#将十进制序列化为xml

我有一个小数属性,就像

[XmlElementAttribute(DataType = "decimal")] decimal Price

问题是我想强制它始终以2的精度序列化,但如果价格是10.50,它将被序列化为XML,如10.5

有什么方法可以强制它(没有创建新属性或更改此属性的获取?我正在寻找一些方法来执行此操作只将模式发送到XmlSerializer(或XmlElementAttribute)或任何聪明的方法来执行此操作?

谢谢

您可以将XmlIgnore添加到实际的十进制属性,并引入一个新属性PriceAsString,它将价格作为字符串返回(格式为10.5 0 )。

您当然也可以实现IXmlSerializable并自己完成所有事情。

然而,这些方式都没有真正发挥作用,而且你已经说过你无论如何也不会走这条路……

我遇到了相反的问题。 我的小数是序列化的4位小数,即使它们都是4个零。 我发现如果我调用decimal.Round(value, 2)那么它会序列化为2位小数。 似乎Decimal类型在序列化时会记住你最后舍入的内容。

我对这个建议持怀疑态度,但这很简单。 即使该值不需要舍入,调用Round也会更改序列化中显示的小数位数。