2012-01-26 3 views
2

У нас есть начало модульного приложения wpf, построенного с использованием призмы.Параметры конфигурации app.config модуля PRISM

Мы хотим, чтобы для каждого модуля, чтобы иметь специфическую конфигурацию - настройки приложения/строки подключения и т.д.

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

Спасибо.

ответ

2

Вы можете попробовать переименовать app.config для каждого конкретного модуля к чему-то вроде YourModule.Name.config и загрузить этот файл в модуле с кодом, как:

var filename = Assembly.GetExecutingAssembly().Location; 
var configuration = ConfigurationManager.OpenExeConfiguration(filename); 
if (configuration != null) 
    _setting = configuration.AppSettings.Settings["SettingName"].Value; 

Может быть, вы должны играть некоторые с именем файла (например, добавление .config в конец), я не могу проверить это прямо сейчас.

+0

Извините за поздний ответ, но благодаря очень много, это работает. Просто удивился тому, что об этом не упоминается в документации на призму. – obaylis

+0

@obaylis Ты очень хорошо :) – chopikadze

0

Имейте интерфейс IConfigurationManager в своем инфраструктурном проекте. Создайте проект ConfigurationManger, который может обрабатывать разделы настроек, соответствующих модулям в файле конфигурации. Зарегистрируйтесь в этом диспетчере конфигурации с IConfigurationManager в своем приложении. С каждым модулем вы вводите значения конфигурации ConfigurationManager и read/write.

class MyModule(IConfigurationManager config, ....) 
{ 
} 
1

Я написал сообщение в блоге, разрешающее аналогичную проблему, которую вы пытаетесь решить. надеюсь, что это поможет.

http://www.thedailyomelette.com/2013/02/maintain-multiple-configs.html

+0

Всегда лучше публиковать свой ответ здесь, чем давать ссылки на блоги, которые когда-нибудь умрут. –

+1

Угадайте, что - ссылка сейчас мертва. Я бы с удовольствием прочитал ответ. –