Динамическая ссылка на файлы ресурсов в С#

У меня есть приложение, на котором я реализую локализацию.

Теперь мне нужно динамически ссылаться на имя в файле 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" ));

Мне потребовалось некоторое время, чтобы понять это. Надеюсь, это поможет кому-то.:)