我正在使用XmlSerializer
使用xsd
使用xsd.exe
创建的类。它已经好几个月了。
现在我收到报告,在某些情况下,创建的xml文件包含序列化的所有小数,没有小数点,例如123.45被序列化为12345。
我无法重现这个问题,但我怀疑它可能与本地化有关。
这是我的第一个C#项目,所以我可能会忽略一些基本的东西。
本地化会导致此问题吗? 如何使序列化过程区域设置独立?
有什么其他可能导致这个问题的想法吗?
答案 0 :(得分:2)
在某些国家/地区,他们使用逗号作为小数点分隔符,并使用点来分隔数千个,因此您的预感可能是正确的。如果您使用的是float
或其他包含小数的数据类型,XmlSerializer
在任何情况下都不应丢弃小数。但是,如果在这样的国家/地区,您在不指定文化的情况下阅读Xml,则可能会忽略该点。
因此,如果您未指定InvariantCulture
之类的内容,则Xml在一个国家/地区序列化并在另一个国家/地区进行反序列化会导致问题。