2011-01-03 22 views
2

xsd.exeを使用してxsdから作成されたクラスでXmlSerializerを使用しています。それは何ヶ月もうまくいきました。シリアライズされたXMLの小数点から小数点が削除されました

ここで、作成されたxmlファイルに小数点なしでシリアル化された小数点がすべて含まれているという報告があります。 12345は12345としてシリアル化されています。

私は問題を再現できませんでしたが、ローカリゼーションに関連している可能性があります。

これは私の最初のC#プロジェクトですので、何か基本的なものを見落としているかもしれません。

ローカリゼーションによってこの問題が発生する可能性がありますか?
シリアル化プロセスをロケールに依存しないようにするにはどうすればよいですか?

この問題の原因となる可能性のあることは何ですか?

+2

"私は問題を再現できませんでした" - これがあなたの最初のステップです。 –

+0

@mitch真。明日は、問題が起きているサイトにアクセスしますが、何を探すべきかを知りたいと思っています。 – MiguelM

答えて

2

一部の国では、カンマを小数点区切り文字として使用し、ドットを千単位で区切っているため、あなたの勘違いが真実になる可能性があります。 floatまたは小数点を保持する別のデータ型を使用している場合、XmlSerializerは小数点以下を捨てるべきではありません。しかし、そのような国で文化を指定せずにThe Xmlを読むと、その点を無視する可能性があります。

したがって、Xmlはある国でシリアル化され、別の国でデシリアライズされると、InvariantCultureなどを指定しないと問題が発生します。

+0

私を正しい方向に向けてくれてありがとう。 「デシリアライゼーション」の部分は、実際にテキストファイルから値を読み取るカスタムコードでした。いくつかの '.ToDecimal()'がありました。私は 'InvariantCulture'を追加しました。これは簡単なテストで問題を解決するようです。 – MiguelM

関連する問題