Как создать утилиту «Панель инструментов», которая принимает модули - PullRequest
5 голосов
/ 17 февраля 2011

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

Например, в MicrosoftOffice, вы обычно будете видеть программы, которые вы можете загрузить и установить, и они просто добавят дополнительную вкладку в Microsoft Word (например), которая будет реализовывать некоторую новую функцию.

У меня есть несколько приложений, которые используют в основном те жеисточник данных, и я хотел бы объединить их, а также оставить открытой возможность добавления большего количества функций в будущем без 1. Требовать новой установки и 2. Настроить каждый фрагмент моего кода.

I 'Я ищу место для начала, в основном.

Заранее спасибо.

**

Редактировать: Чтобы уточнить немного больше ... То, что я имею в видуВ частности, это приложение, которое обращается к большому набору данных, которые хранятся в текстовых файлах и использует некоторые данных для создания нескольких графиков и, возможно, некоторыхстолы.Я хотел бы иметь возможность добавлять различные графики в будущем, используя одни и те же данные.Итак, вы можете нажать Button_A и сгенерировать Graph_A, а через несколько недель вы можете нажать Button_B и сгенерировать Graph_B.

Было бы очень хорошо, если бы я мог придумать способ, который требовал бы только считывания данных из файла (ов) один раз, но я знаю, что это потребовало бы немного скорректировать мой класс DataReader.

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Взгляните на библиотеку составных приложений от Microsoft.

Она предназначена для WPF, но вы можете получить некоторые идеи оттуда.

3 голосов
/ 17 февраля 2011

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

Найдя вспомогательные классы, вы можете создавать экземпляры во время выполнения и добавлять в свое приложение.Это общая идиома в .NET для поддержки «плагинов»

Класс Activator - это распространенный способ создания экземпляров из Type во время выполнения.

http://msdn.microsoft.com/en-us/library/system.activator.aspx

Трудно дать более подробную информацию без дополнительной информации в вашем вопросе.Можете ли вы уточнить немного?

2 голосов
/ 17 февраля 2011

Как сказал Адам, первое, что нужно сделать, это определить интерфейс для ваших подключаемых модулей - что они могут ожидать от контейнера и какие методы должен вызывать контейнер?

Что касается самого контейнера, я неравнодушен к MEF как технологии определения местоположения; Вы можете создавать каталоги и заново создавать систему при добавлении новых библиотек DLL. Я создал подобную систему для анализа разнородных файлов, а возможности компоновки MEF превосходны для обнаружения во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...