从字符串资源动态获取字符串

时间:2012-11-02 11:26:09

标签: c# resources

我正在开发一个本地化的C#.NET应用程序,我们使用strings.resx文件来翻译应用程序中的硬编码字符串。我使用以下代码来提取它们:

using MyNamespace.Resources

...

string someString = strings.someString;

但是,现在我希望能够在调用中定义字符串的名称,如下所示:

string someString = GetString("someString");

我一直在玩ResourceManager,但我无法找到将其指向strings.resx文件的方法。

我该怎么做?

5 个答案:

答案 0 :(得分:47)

有点搜索就可以了。我的ResourceManager课程中有strings可用的权利:

ResourceManager rm = strings.ResourceManager;
string someString = rm.GetString("someString");

答案 1 :(得分:22)

ResourceManager.GetString应该这样做。

从MSDN中删除示例:

ResourceManager rm = new ResourceManager("RootResourceName",
                                         typeof(SomeClass).Assembly);
string someString = rm.GetString("someString");

答案 2 :(得分:11)

我使用ASP.NET Core MVC遇到了同样的问题并设法使用

来解决它
ResourceManager rm = new ResourceManager(typeof(YourResourceClass));
string someString = rm.GetString("someString");

与@ Vlad的解决方案非常相似,但我有MissingManifestResourceException

答案 3 :(得分:5)

有更简单的方法可以做到这一点

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

在你的情况下

strings.resx.ResourceManager.GetString("someString");

答案 4 :(得分:4)

您可以编写如下静态方法:

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);

当你想要一个泛型函数来获取任何资源文件的String时,这很有用。

相关问题