我正在开发一个本地化的C#.NET应用程序,我们使用strings.resx
文件来翻译应用程序中的硬编码字符串。我使用以下代码来提取它们:
using MyNamespace.Resources
...
string someString = strings.someString;
但是,现在我希望能够在调用中定义字符串的名称,如下所示:
string someString = GetString("someString");
我一直在玩ResourceManager
,但我无法找到将其指向strings.resx
文件的方法。
我该怎么做?
答案 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时,这很有用。