1

地域関連のWebクライアントを取得しました。ここで、通貨は地域形式のように設定され、次のように解析されます。

bool result = decimal.TryParse(currencyValue, NumberStyles.Currency, myCulture, out value);

この10進数をxmlにシリアル化し、10進数が以前にmyCulture = en-USで解析された場合、xmlserializerは<Curr id="2" amnt="100000000.00"/>それを返し、同じ番号に逆シリアル化します...しかし、sk-SKまたはcs-CZで行うと、<Curr id="2" amnt="100000000,00"/>*100を返す戻り値になります。デシリアライズ時(コンマを無視)..。

この地域を小数から削除する、または不変にする可能性はありますか?(文字列に変換して、地域を処理するために再度解析したくない場合)

4

2 に答える 2

1

だから私は自分の質問に対する答えを書いて、このテーマを閉じることができます...

新しい興味深い点がありました。それは、今日の朝、仕事を始めてから得たものです。IDictionaryはIXmlSerializableを実装するまでシリアル化できないため、シリアル化する前に問題のある10進数がdistionaryに追加されました。これは少し問題です。オーバーライドするには、ReadXmlとWriteXmlの2つのメソッドがあります。そしてここに目標があります。WriteXmlでは使用されdecimalValue.ToString()ていたため、問題が発生します。理由はわかりませんが、これ.ToString()により、問題の説明と一致しない結果が返されます。テストプロジェクトでは完璧に機能するので、どのように発生するのかわかりませんが、完全なコンテキストでは機能しません。しかし、エージェント・モルダーが信じていたように、真実はそこにあります

decimalValue.ToString()だから私がする必要があるのは、decimalValue.ToString(CultureInfo.InvariantCulture)

あなたの時間のためのthx。

于 2012-07-16T15:20:59.777 に答える
0

リージョナルはオンスクリーンディスプレイ用です。ユーザーが理解できる、または好きな形式で情報をユーザーに表示します。データがユーザーに表示されていない場合(メモリ内、データベース内、ネットワーク上)、常に既知の形式でデータをシリアル化します。@Odedが指摘したように、カルチャ情報に関しては、これは通常InvariantCultureです。

これにより、各カルチャに他のカルチャを認識させなくても、あるカルチャから別のカルチャにデータを転送できます。

于 2012-07-13T18:27:11.557 に答える