Ответ 1
Небольшой поиск сделал трюк. У меня есть право ResourceManager
, доступное в моем классе strings
:
ResourceManager rm = strings.ResourceManager;
string someString = rm.GetString("someString");
Я работаю над локализованным С#.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 Core MVC и удалось решить ее с помощью
ResourceManager rm = new ResourceManager(typeof(YourResourceClass));
string someString = rm.GetString("someString");
Очень похоже на решение @Vlad, но в остальном я имел MissingManifestResourceException
Вы можете написать статический метод следующим образом:
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 любого файла ресурсов.
Существует гораздо более простой способ сделать это
[NameOfyourResxfile].ResourceManager.GetString("String Name");
в твоем случае
strings.resx.ResourceManager.GetString("someString");