C# serialize decimal to xml

谁说胖子不能爱 提交于 2020-01-12 11:41:12

问题


I got a decimal property, like

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

The problem is that I wanna force it to serialize always with precision of 2, but if the price is 10.50 it will be serialized to XML like <Price>10.5</Price>.

Theres any way to force it (without creating a new property or changing the get of this property? I'm looking for some way to do this only sending a pattern to the XmlSerializer (or the XmlElementAttribute) or any smart way to do this ?

Thanks


回答1:


You could add XmlIgnore to the actual decimal property and introduce a new property PriceAsString which returns, eh, the price as string (in 10.50 format).

You could of course also implement IXmlSerializable and do everything yourself.

However, none of these ways really rocks, and you already stated you were not going to go down this road anyway...




回答2:


I was having the opposite problem. My decimals were serializing with 4 decimal places, even though they were all 4 zeroes. I discovered that if I call decimal.Round(value, 2) then it serializes to 2 decimal places. It would appear that the Decimal type remembers what you last rounded it too when it is serialized.

I was suspicious of the suggestion, but it worked that simply. Even though the value didn't need rounding, calling Round changed how many decimal places showed up in serialization.



来源:https://stackoverflow.com/questions/1613307/c-sharp-serialize-decimal-to-xml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!