Сведения о вопросе

HEIGTH

08:29, 18th August, 2020

Теги

c#   localization    

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

Просмотров: 490   Ответов: 2

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

Теперь мне нужно динамически ссылаться на имя файла ресурсов.

предположим, что у меня есть файл ресурсов с именем Login.resx, а также ряд строк: foo="hello", bar="cruel" и baz="world"

обычно я буду ссылаться как: Строковый результат =Login.foo; и результат= = "hello";

моя проблема заключается в том, что во время кода я не знаю, хочу ли я ссылаться на foo, bar или baz - у меня есть строка, содержащая либо "foo", "bar", либо "baz".

Мне нужно что-то вроде:

Login["foo"];

Кто-нибудь знает, есть ли способ динамически ссылаться на строку в файле ресурсов?



  Сведения об ответе

nYU

21:06, 1st October, 2020

Вам нужно будет создать экземпляр ResourceManager для Login.resx :

var resman = new System.Resources.ResourceManager(
    "RootNamespace.Login",
    System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");

Это может помочь посмотреть на сгенерированный код в файлах кода позади файлов ресурсов, которые создаются IDE. Эти файлы в основном содержат свойства только для чтения для каждого ресурса, который делает запрос к внутреннему менеджеру ресурсов.


  Сведения об ответе

ITSME

11:06, 15th August, 2020

Если вы поместили свой файл ресурсов в папку App_GlobalResources, как это сделал я, вам нужно использовать

global::System.Resources.ResourceManager темп = новый global::System.Resources.ResourceManager("RootNamespace.Login", global::System.Reflection.Assembly.Load("App_GlobalResources"));

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться