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

StackOverflow https://stackoverflow.com/questions/29845

  •  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");

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top