3

そのため、ローカライズ用のリソース ファイルがいくつかあります。これらはフォーマット可能な文字列です。

例えば:

MyResource.resx
 Title: "MyApp - Ver: {0}"

次に、次のようにして返します。

public String Title
{
    get { return String.Format(CultureInfo.CurrentUICulture, MyResources.Title, 1); }
}

CurrentUICulture と CurrentCulture の違いは理解していますが、FxCop は代わりに CurrentCulture を使用するように指示していますか?

4

3 に答える 3

7

ある程度 FxCop は正しいですCurrentUICulture。この場合は使用しないでください。他の人がすでに言ったように、CurrentCultureはロケール対応の書式設定をCurrentUICulture目的としていますが、リソースから翻訳可能な文字列を読み取ることを目的としています。
ここで行ったのは number の書式設定でした。したがって、FxCop はあなたが間違ったを使用したと文句を言いますCultureInfo。残念ながら、FxCop が教えてくれなかったのは、実際には を使用する必要があるということCultureInfo.InvariantCultureです。なんで?バージョン番号は Locale に依存しないものだからです。1.9 のようなものは常に表示され、1.9 のようなものは表示されません。これInvariantCultureが進むべき道です。
マイクロソフトは、バージョン情報を保存するための特定のクラスも提供しました-奇妙なことに、その名前はVersion(AFAIRにあるSystem名前空間)。これにより、前に述べたように、常にバージョン番号が表示されますToString()。そのコンストラクターは、インスタンス化するときに、ロケール不変のバージョン文字列も想定しています。

于 2011-07-25T10:30:27.753 に答える
5

String.FormatCurrentCulture多くの場合、ではなくに基づく数値または日付の書式設定に使用されますCurrentUICulture

于 2011-07-22T20:48:53.880 に答える
4

別のことは、それは常に特定の文化であるCurrentUICulture一方で、中立的な文化になる可能性があるということです.CurrentCulture

型はXXXFormatInfoニュートラル カルチャでは機能せず、NotSupportedException例外が発生します。

于 2011-07-22T22:55:15.927 に答える