1

У меня есть файл .resx «GUI Strings» в моем приложении, который содержит все строки, которые я показываю. Я, очевидно, могу получить доступ к каждой строке напрямую через Resources.Resource_GUI_Strings.CameraSettings_BrightnessLabelОтображение всех строк ресурсов в файле resx

Но как я могу перечислять все настройки в файле .resx, так как их пара (имя, значение) является моей единственной опцией, использующей отражение?

Я хочу перечислить все пары (т. Е. CameraSettings_BrightnessLabel & «Яркость»), чтобы пользователь мог редактировать строку для каждого элемента. Это значит, что они могут локализовать GUI. Я не хочу полностью интернационализировать приложение, требования только для того, чтобы пользователь мог сам это сделать.

Поэтому мне нужно иметь возможность считывать пары значений из файла .resx, а затем записывать их обратно, если пользователи их редактируют.

Просто чтобы добавить, я хочу сделать это во время выполнения внутри самого приложения, поэтому я не могу разобрать файл .resx на диске.

+0

Почему бы не использовать отражение? Это не похоже на кусок кода, который будет работать 1000 раз в цикле. Похоже, что это будет какое-то меню Edit-> Options, поэтому даже с Reflection вы действительно не заметите какого-либо удара по производительности. – BFree

+0

Я не уверен, что понимаю ваши требования. Вы хотите сохранить значения между запусками приложений? Каждый пользователь настраивает собственную версию графического интерфейса пользователя или должен ли пользователь настраивать общие настройки для всех пользователей? – Greg

+0

Клиент удовлетворен базовой интернационализацией, поэтому единственное, что им нужно, - это возможность каждого пользователя изменять любую метку в графическом интерфейсе от стандартного «английского» ярлыка до своего собственного. Поэтому значения должны сохраняться, но только для этого пользователя графического интерфейса. –

ответ

2

Обычно я использовал классы ResXResourceReader и ResXResourceWriter, но я предполагаю, что ваши файлы resx будут заблокированы во время выполнения. Возможно, вам лучше хранить текст в базе данных, а не файлы ресурсов, чтобы обойти это.

This answer показывает, как создать пользовательский поставщик ресурсов/диспетчер ресурсов для хранения/редактирования ресурсов в базе данных. В качестве альтернативы вы можете отказаться от модели ресурсов в целом и бросить свое собственное решение.

Смежные вопросы