2008-11-15 4 views
5

Я пишу приложение, которое включает в себя плагиновую систему в другой сборке.Использование настроек приложения в сборках

Проблема в том, что системе плагина необходимо получить настройки приложения из основного приложения (например, каталог для поиска плагинов).

Как это делается, или я об этом ошибаюсь?

Редактировать: Мне было предложено добавить некоторые сведения о том, как работает система плагинов. Я не полностью отработал это, и я только начал его реализовывать, но в основном я пошел на this article.

+0

Возможно, вы захотите добавить некоторые сведения о том, как работает система плагинов. Существует множество различных способов обработки связи в обоих направлениях между основным приложением и плагинами. – MusiGenesis 2008-11-15 22:48:12

ответ

3

Позвольте основному приложению получить каталог плагина из настроек приложения и вставить его в систему плагина.

2

Возможно, вы можете вставить конфигурацию в качестве аргумента при создании плагина?

//Get the configuration for the current appDomain 
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

//Create the plugin, and pass in the configuration 
IPlugin myPlugin = new AlfaPlugin(config); 

Возможно, вам понадобится ссылка на сборку System.Configuration.

+0

Это именно то, что я говорил ... – EricSchaefer 2008-11-15 23:07:04

1

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

Вы можете сделать это путем получения от System.Configuration.ConfigurationSection и записи свойств, которые представляют атрибуты и подэлементы. Для получения дополнительной информации см. How to: Create Custom Configuration Sections Using ConfigurationSection.

AppDomain, в котором работает библиотека, представляет собой текущую область конфигурации. Пространство имен System.Configuration сопоставляет все файлы конфигурации и представляет собой единое представление.

Чтобы получить текущий экземпляр раздела, вы можете использовать ConfigurationManager.GetSection(...).

Ваш плагин должен принять экземпляр этого раздела вместо общего объекта Configuration.

Смежные вопросы