Динамическая ссылка на файлы ресурсов в C#
-
09-06-2019 - |
Вопрос
У меня есть приложение, в котором я реализую локализацию.
Теперь мне нужно динамически ссылаться на имя в файле ресурсов.
предположим, что у меня есть файл ресурсов с именем Login.resx, содержащий несколько строк:foo="привет", bar="жестокий" и baz="мир"
обычно я буду называть:Строковый результат =Login.foo;и result=="привет";
Моя проблема в том, что во время написания кода я не знаю, хочу ли я ссылаться на foo, bar или baz - у меня есть строка, содержащая либо «foo», «bar» или «baz».
Мне нужно что-то вроде:
Логин["фу"];
Кто-нибудь знает, есть ли способ динамически ссылаться на строку в файле ресурсов?
Решение
Вам нужно будет создать экземпляр ResourceManager
для Login.resx
:
var resman = new System.Resources.ResourceManager(
"RootNamespace.Login",
System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");
Возможно, будет полезно просмотреть сгенерированный код в файлах кода программной части файлов ресурсов, созданных в среде IDE.Эти файлы в основном содержат свойства только для чтения для каждого ресурса, который отправляет запрос внутреннему менеджеру ресурсов.
Другие советы
Если вы поместите файл ресурсов в папку App_GlobalResources, как я, вам нужно будет использовать
Global :: System.Resources.ResourceManager temp = new Global :: System.Resources.ResourceManager ("rootNamespace.login", Global :: System.Reflection.Assembly.Load ("app_GlobalResources");
Мне потребовалось некоторое время, чтобы понять это.Надеюсь, это кому-то поможет.:)