Динамическая ссылка на файлы ресурсов в С#
У меня есть приложение, на котором я реализую локализацию.
Теперь мне нужно динамически ссылаться на имя в файле resouce.
Предположим, у меня есть файл ресурсов, называемый Login.resx, ряд строк: foo = "hello", bar = "cruel" и baz = "world"
обычно, я буду называть:
Строковый результат = Login.foo;
и результат == "hello";
Моя проблема в том, что во время кода я не знаю, хочу ли я ссылаться на foo, bar или baz. У меня есть строка, содержащая "foo", "bar" или "baz".
Мне нужно что-то вроде:
Войти [ "Foo" ];
Кто-нибудь знает, есть ли способ динамически ссылаться на строку в файле ресурсов?
Ответы
Ответ 1
Вам понадобится экземпляр ResourceManager
для Login.resx
:
var resman = new System.Resources.ResourceManager(
"RootNamespace.Login",
System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");
Это может помочь просмотреть сгенерированный код в файлах с кодом для файлов ресурсов, созданных средой IDE. Эти файлы в основном содержат свойства readonly для каждого ресурса, который делает запрос внутреннему диспетчеру ресурсов.
Ответ 2
Если вы поместите свой файл ресурсов в папку App_GlobalResources, как я, вам нужно использовать
Глобальный:: System.Resources.ResourceManager temp = new глобальный:: System.Resources.ResourceManager( "RootNamespace.Login", глобальный:: System.Reflection.Assembly.Load( "App_GlobalResources" ));
Мне потребовалось некоторое время, чтобы понять это. Надеюсь, это поможет кому-то.:)