XmlConvert.ToString不是本地不变量?

时间:2014-01-10 12:44:16

标签: .net xml serialization decimal culture

对于我们的多层应用程序,我们使用XmlConvert.ToString()生成xml。

此XML String通过我们的“配置应用程序”发送到物理设备进行配置。

另一个应用程序负责连接此物理设备,并且必须检查远程物理设备是否具有相同的配置。

我们检查每个字段是否具有相同的字符串值。

我们用

写下这个值
stringValue = XmlConvert.ToString((decimal)objValue);

我们两个软件之间没有相同的本地,似乎它有效:

我们收到小数值1。在我的自定义语言环境(fr-CH)的一个应用程序(配置器)上,我有以下输出: "1"

但在另一个应用程序中,使用完全相同的代码,我们会收到输出"1.0",从而导致验证失败。

我在经过一些研究(here)后想到XmlConvert.ToString是文化不变的。没有?

此外,我无法配置任何“文化”用于序列化我的小数。我错过了什么?

1 个答案:

答案 0 :(得分:0)

由于@Jon Skeet评论,我终于找到了更多的信息。

由于小数点具有“精确”概念(不知道),我接收一次“1.0”,一次“1”(事实上,1.0来自数据库,我猜这会强制一些)。

我找到this来规范化我的小数,这非常有效:

public static class DecimalExtensions
{
    public static Decimal Normalize(this Decimal value)
    {
        return value / 1.000000000000000000000000000000000m;
    }
}