33

私はローカライズされたC#.NETアプリケーションに取り組んでおり、strings.resxファイルを使用してアプリケーション内のハードコードされた文字列を変換しています。次のコードを使用してそれらを抽出します。

using MyNamespace.Resources

...

string someString = strings.someString;

しかし、ここで、呼び出しで文字列の名前を次のように定義できるようにしたいと思います。

string someString = GetString("someString");

私は少しいじっていますが、それを自分のファイルに送るResourceManager方法が見つかりません。strings.resx

それ、どうやったら出来るの?

4

5 に答える 5

52

少し検索するとうまくいきました。私は自分のクラスResourceManagerで利用できる権利を持っています:strings

ResourceManager rm = strings.ResourceManager;
string someString = rm.GetString("someString");
于 2012-11-02T11:39:59.293 に答える
23

ResourceManager.GetStringする必要があります。

MSDNからの削除された例:

ResourceManager rm = new ResourceManager("RootResourceName",
                                         typeof(SomeClass).Assembly);
string someString = rm.GetString("someString");
于 2012-11-02T11:30:41.140 に答える
12

ASP.NET Core MVCを使用して同じ問題が発生し、

ResourceManager rm = new ResourceManager(typeof(YourResourceClass));
string someString = rm.GetString("someString");

@Vladのソリューションと非常に似ていますが、それ以外はMissingManifestResourceException

于 2016-06-16T15:46:40.237 に答える
10

これを行うためのはるかに簡単な方法があります

 [NameOfyourResxfile].ResourceManager.GetString("String Name");

あなたの場合

strings.resx.ResourceManager.GetString("someString");
于 2017-03-18T17:19:56.280 に答える
5

次のような静的メソッドを記述できます。

public static string GetResourceTitle<T>(string key)
{
  ResourceManager rm = new ResourceManager(typeof(T));
  string someString = rm.GetString(key);
  return someString;
}

そしてどこにでも電話してください:

var title=  GetResourceTitle<*YouResourceClass*>(key);

リソースファイルの文字列を取得するジェネリック関数が必要な場合に便利です。

于 2017-01-26T08:13:40.733 に答える