Как получить доступ к пользовательской конфигурации из моего приложения библиотеки классов? - PullRequest
2 голосов
/ 01 октября 2011

У меня есть пользовательская конфигурация в моем Инфраструктурном проекте, но когда запускается мое приложение, распознается только мой web.config.

Я не хочу размещать конфигурацию этого пользовательского файла конфигурации в моей сети.config, потому что эта конфигурация отвечает за уровень инфраструктуры.

Как использовать эту пользовательскую конфигурацию из другого проекта в моем веб-проекте?

Ответы [ 3 ]

3 голосов
/ 01 октября 2011

Предыдущие ответы на этот вопрос не сообщают вам о критической точке.

.NET имеет единый процесс конфигурации для каждого AppDomain.Все библиотеки классов будут использовать файл конфигурации приложения, которое их вызывает.В вашем случае ваша библиотека классов будет использовать web.config.Если бы ваша библиотека классов использовалась из консольного приложения, то она использовала бы файл application .exe.config.

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

0 голосов
/ 01 октября 2011

Предполагая, что инфраструктурный проект является библиотекой классов, рассматривали ли вы создание свойств для предоставления настроек app.config (?) Внешнему интерфейсу?

Вот пример того, что я имею ввидуИмейте в виду, что это всего лишь пример.Это свойство, которое демонстрирует, как выставить значение конфигурации через свойство.В вашем случае свойство будет извлекать значение из вашего пользовательского файла конфигурации.

public string GetConfigurationValue(string Key)
{
    return GetValueFromConfiguration(Key);
}

Мне интересно одно: почему вы создаете пользовательский файл конфигурации, а не просто создаете раздел конфигурации, который вы можете интегрировать в файл app.config.Кажется, ты делаешь вещи намного сложнее, чем нужно.

0 голосов
/ 01 октября 2011

Примерно так:

var exeMap = new ExeConfigurationFileMap {ExeConfigFilename = @"C:\Path\To\Your\File"};
Configuration myConfig = ConfigurationManager.OpenMappedExeConfiguration(
    exeMap, ConfigurationUserLevel.None
);
...