获取一个字符串动态地从字符串资源(Getting a string dynamically from

2019-07-03 12:57发布

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

using MyNamespace.Resources

...

string someString = strings.someString;

但是,现在我希望能够来定义呼叫,像这样的字符串名称:

string someString = GetString("someString");

我一直在玩弄一点与ResourceManager ,但我不能找到一种方法,直接到我strings.resx文件。

我怎么做?

Answer 1:

一点点搜索的伎俩。 我有权利ResourceManager可用在我的strings类:

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


Answer 2:

ResourceManager.GetString应该做的。

从MSDN剥离下来的例子:

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


Answer 3:

我不得不使用ASP.NET MVC核心同样的问题,并设法利用来解决这个问题

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

非常相似,@弗拉德的解决方案,但除此之外,我有一个MissingManifestResourceException



Answer 4:

有这样做的更简单的方法

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

你的情况

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


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

如果你想有一个通用的函数来获取任何资源文件的字符串是非常有用的。



文章来源: Getting a string dynamically from strings resources
标签: c# resources