我工作的一个本地化的C#.NET应用程序,我们使用的是strings.resx
文件翻译应用程序中的硬编码字符串。 我用下面的代码来提取它们:
using MyNamespace.Resources
...
string someString = strings.someString;
但是,现在我希望能够来定义呼叫,像这样的字符串名称:
string someString = GetString("someString");
我一直在玩弄一点与ResourceManager
,但我不能找到一种方法,直接到我strings.resx
文件。
我怎么做?
一点点搜索的伎俩。 我有权利ResourceManager
可用在我的strings
类:
ResourceManager rm = strings.ResourceManager;
string someString = rm.GetString("someString");
ResourceManager.GetString
应该做的。
从MSDN剥离下来的例子:
ResourceManager rm = new ResourceManager("RootResourceName",
typeof(SomeClass).Assembly);
string someString = rm.GetString("someString");
我不得不使用ASP.NET MVC核心同样的问题,并设法利用来解决这个问题
ResourceManager rm = new ResourceManager(typeof(YourResourceClass));
string someString = rm.GetString("someString");
非常相似,@弗拉德的解决方案,但除此之外,我有一个MissingManifestResourceException
有这样做的更简单的方法
[NameOfyourResxfile].ResourceManager.GetString("String Name");
你的情况
strings.resx.ResourceManager.GetString("someString");
你可以写这样的静态方法:
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);
如果你想有一个通用的函数来获取任何资源文件的字符串是非常有用的。