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

我正在开发一个本地化的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");