Используя appsettings в уровне DAL

У меня есть приложение winforms, в котором некоторые данные хранятся в XML-файлах. Местоположение, где эти XML-файлы должны быть сохранены, может быть настроено пользователем и хранится в AppSettings. Все мои слои являются отдельными блоками. Действительно ли я могу получить доступ к своим настройкам от моего блока DAL, или я должен передать это как аргумент через все мои слои?

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

        Configuration config = ConfigurationManager.OpenExeConfiguration(
            System.Reflection.Assembly.GetEntryAssembly().Location);
        string dataStorageLocation = config.AppSettings["DataStorageLocation"];

конфигурация. AppSettings["DataStorageLocation"] дает ошибку компиляции: Система. Конфигурация. ConfigurationElement.this [Система. Конфигурация. ConfigurationProperty] недоступен из-за его уровня защиты. Почему это?

Кто-то может поместить меня на правильном пути?Спасибо.

5
задан Peter 3 January 2010 в 13:49
поделиться

2 ответа

Вам необходимо использовать config.AppSettings.Settings["DataStorageLocation"]. Смотрите документация MSDN для примера.

Альтернативно, и IMHO лучше, вы можете использовать System.ConfigurationManager.AppSettings[name] для доступа к AppSettings приложения хоста. Это, вероятно, более гибкое решение, чем ваша техника, так как оно также будет работать, если ваша DAL сборка, например, размещена на уровне служб в IIS. Доступ к конфигурационной информации из конфигурационного файла хост-приложения напрямую таким образом вполне приемлем, и в целом лучше, чем передача конфигурационной информации через уровни.

.
8
ответ дан 13 December 2019 в 19:28
поделиться

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

3
ответ дан 13 December 2019 в 19:28
поделиться
Другие вопросы по тегам:

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