Как получить доступ к конфигурации приложения от .dll?

Я недавно вспыхнул часть своего приложения winform в .dll. Некоторые классы, в которых dll хочет пользовательские настройки выборки/хранилища. Классы просто использовали сгенерированный файл Настроек VS, таким образом, он просто сделал Properties.Settings.Default.SomeSetting = var;Properties.Settings.Default.Save() и т.д.

Каковы мои опции теперь, когда я выгнал тот код с квартиры к классу library/.dll?

7
задан leeeroy 22 February 2010 в 19:50
поделиться

4 ответа

Хостинговое приложение должно обрабатывать интерфейс файла конфигурации, а не DLL. Либо

  1. Передайте любые настройки, которые необходимо прочитать / изменить в DLL в качестве параметров, либо

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

В принципе это похоже на удаление интерфейса базы данных с бизнес-уровня многоуровневого приложения и его инкапсуляцию в уровень данных.

3
ответ дан 7 December 2019 в 07:44
поделиться

Я бы не рекомендовал это (лучше используйте свой собственный класс для настроек), но вы можете попробовать следующее:

string sectionName = "applicationSettings/" + 
            appName + ".Properties.Settings";
         System.Configuration.ClientSettingsSection section = 
            (System.Configuration.ClientSettingsSection)
             System.Configuration.ConfigurationManager.GetSection(sectionName);
         foreach (SettingElement setting in section.Settings)
         {
            string value = setting.Value.ValueXml.InnerText;
            string name = setting.Name;
            if (name.ToLower().StartsWith(searchName.ToLower()))
            {
               return value;
            }
         }
0
ответ дан 7 December 2019 в 07:44
поделиться

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

2
ответ дан 7 December 2019 в 07:44
поделиться

Класс Properties является автогенерируемым. Это действительно обертка для конфигурационного файла. Если вы не хотите менять свой дизайн, просто зайдите в код и скопируйте его в свою DLL. Но помните, что он больше не будет магически поддерживаться (регенерироваться). Или вы можете использовать ConfigurationManager, чтобы получить доступ к файлу конфигурации напрямую.

2
ответ дан 7 December 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: