2

クラス ライブラリ プロジェクトにリソース ファイルがあります。このリソース ファイルを使用して、ユーザーに表示される可能性のあるさまざまなメッセージを保持しています。

たとえば、リソースの名前は「InvalidEmailAddress」で、en-US リソース ファイルの値は「Invalid Email Address」です。

ResourceManager の GetString(string) メソッドを呼び出すと、次のようになります。

 return resourceManager.GetString("InvalidEmailAddress");

しかし、これは私には本当に悪いようです。誰かがリソースの名前を変更した場合はどうなりますか? これで、ステートメントは null 値を返します。

この問題を回避する方法はありますか?

更新: ここでは、ローカリゼーションが重要な要素です。リソース マネージャーは、カルチャを変更して適切な文字列値を取得できるようにするために使用されます。

4

2 に答える 2

5

代わりに、自動生成されたクラスを使用できます。マジック ストリング定数はコードから削除され、厳密に型指定されたアクセス メソッドに置き換えられます。VS はこのファイルに ResourceName.Designer.cs という名前を付け、VS で resx が変更されるたびに更新します。

生成されたメソッドのサンプル:

   internal static string String1 {
        get {
            return ResourceManager.GetString("String1", resourceCulture);
        }

注: このファイルの作成は、VS に新しいリソースを追加するときの既定の動作ですが、それを無効にしたか、アセンブリの外部で生成されたリソースを使用しようとした可能性があります。その場合は、"カスタム ツール" プロパティまたは resx ファイルを "PublicResXFileCodeGenerator" または "ResXFileCodeGenerator" に設定してください (後で単一のアセンブリ内でのみリソースを使用する場合)。(コメントをありがとう@dbaseman)。

于 2012-10-21T00:27:28.300 に答える
2

Resource を作成すると、Resources 名前空間に厳密に型指定されて生成されます。

リソース (resx) ファイルの名前はResources.ClassName.InvalidEmailAddresswhere でアクセスできます。ClassName

于 2012-10-21T00:33:28.840 に答える