Получение строки динамически из строк ресурсов

Я работаю над локализованным C # .NET-приложением, и мы используем файл strings.resx для перевода жестко заданных строк в приложение. Для их использования я использую следующий код:

 using MyNamespace.Resources ... string someString = strings.someString; 

Но теперь я хочу, чтобы определить имя строки в вызове, что-то вроде этого:

 string someString = GetString("someString"); 

Я немного искал ResourceManager , но я не могу найти способ strings.resx файл strings.resx .

Как я могу это сделать?

Небольшой поиск сделал трюк. У меня есть правильный ResourceManager ansible в моем classе 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 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); 

Это полезно, когда вы хотите иметь общую функцию для получения String любого файла ресурсов.

Существует очень простой способ сделать это

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

в твоем случае

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