从字符串资源动态获取字符串
我正在开发一个本地化的C#.NET应用程序,我们正在使用strings.resx
文件来翻译应用程序中的硬编码字符串。 我使用以下代码来提取它们:
using MyNamespace.Resources ... string someString = strings.someString;
但是,现在我希望能够在调用中定义字符串的名称,如下所示:
string someString = GetString("someString");
我一直在玩ResourceManager
,但我找不到将它指向我的strings.resx
文件的方法。
我怎么做?
有点搜索就可以了。 我的strings
类中有正确的ResourceManager
:
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 Core MVC遇到了同样的问题,并设法使用它来解决它
ResourceManager rm = new ResourceManager(typeof(YourResourceClass)); string someString = rm.GetString("someString");
与@ Vlad的解决方案非常相似,但我有一个MissingManifestResourceException
你可以编写一个这样的静态方法:
public static string GetResourceTitle(string key) { ResourceManager rm = new ResourceManager(typeof(T)); string someString = rm.GetString(key); return someString; }
随叫随到:
var title= GetResourceTitle<*YouResourceClass*>(key);
当您想要一个generics函数来获取任何Resource文件的String时,它很有用。
有很简单的方法可以做到这一点
[NameOfyourResxfile].ResourceManager.GetString("String Name");
在你的情况下
strings.resx.ResourceManager.GetString("someString");