Обработка большого количества настроек в приложении C# WinForms?

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

Вопрос

Я (надеюсь) возьмусь за большой проект по переносу корпоративного приложения Visual FoxPro на C# 3.0 на .NET 3.5.Я знаю, что это приложение имеет огромное количество настроек, которые влияют на все: от многопользовательских/многосайтовых конфигураций до свойств отчетов.Существует как минимум 150 различных настроек, которые в настоящее время имеют глобальную область действия.

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

Мой вопрос: знаете ли вы какой-либо способ хранения этих настроек, который позволил бы изменять их для каждого пользователя без ущерба для производительности?Его также необходимо будет хранить таким образом, чтобы можно было изменять значения во время работы приложения.Любые идеи были бы хорошы.

Это было полезно?

Решение

Я считаю, что стандартный файл Settings.Settings предлагает вам эту функциональность, включая переменные области приложения или пользователя.Хотя я не на 100% уверен, что изменения подхватятся без перезапуска приложения.

Смотрите здесь для получения дополнительной информации:MSDN: Использование настроек в C#

Другие советы

Если вы хотите перейти на «корпоративный» уровень, вы можете попробовать создать таблицу определений параметров в сочетании с таблицей пользовательских настроек.

В определениях параметров ПК будет определен столбцом домена (для параметров пользовательского интерфейса, параметров подключения, языковых настроек и т. д.) и идентификатором параметра.Третий столбец будет определять значение по умолчанию/глобальное значение.

В настройках пользователя для PK будет установлено значение PK определений настроек + идентификатор пользователя и столбец значений настроек varchar(x).

Если приложение поддерживает язык, столбцы идентификатора языка следует добавить в обе таблицы.

Сохранение пользовательских изменений в таблице пользовательских настроек должно быть тривиальной задачей.Получить уведомление об изменении глобальных настроек немного сложнее.

РЕДАКТИРОВАТЬ:Следует иметь в виду, что всегда следует возвращаться к некоторому значению по умолчанию:глобальная настройка/язык по умолчанию.

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

Возможно, вам придется логически проработать элементы, которые зависят от данных/приложения, а не от пользователя.В VFP (foxpro) таблицы и соответствующие им первичные ключи, очевидно, одинаковы независимо от пользователя.Другие вещи, такие как значения по умолчанию, могут быть настроены для каждого отдельного пользователя, учетных записей, доступа, возможностей добавления/редактирования/удаления и т. д.

ХТХ

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