Я экспериментирую с архитектурой плагина для внутренней бизнес-системы моей компании. Мне удалось прочитать все .DLLs в папке Plugin, которые реализуют определенный интерфейс. То, что я пытаюсь выяснить, является лучшим способом связи между родительским приложением «хозяин» MDI и формами, которые будут в .LLL, которые я намереваюсь делать MDI-детьми.Архитектура плагинов - создайте родительскую форму MDI, сознающую детей в DLL
В настоящее время я возвращаю объекты ToolStripMenuItem только из файлов .DLL, чтобы добавить родителя MDI. Я также тестировал, что события, подключенные в .LLL к ToolStripMenuItems, распространяются на код в .LLL. Мне также удалось вернуть объект Form через интерфейс и открыть эту форму, поскольку папка Plugin «сканируется».
Однако я не знаю, как я буду делать эти формы детьми MDI. Кроме того, любые другие формы, живущие в .LLL, также должны быть детьми MDI. Я создал проект VS 2008 Addin, чтобы увидеть, что происходит, и кажется, что Addin принимает объект Application, на который он добавляет ToolStripMenuItems, и выполняет другие операции. Код для создания меню внутри .DLL. Это противоположно тому, что я сделал до сих пор, когда MDI запрашивает ToolStripMenuItem из каждого .DLL и добавляет возвращенный объект в свое собственное меню.
Будет ли моя архитектура плагина принимать объект приложения таким же образом, как я мог бы получить формы для открытия в качестве ребенка MDI? Я прошу других, в настоящее время неизвестных мне, головных болей, НЕ передавая объект приложения в .DLL?
Мне интересно делать что-то подобное. Вы когда-нибудь получали эту работу? Я не уверен, как заставить хост-форму контролировать папку, и как только она это сделает, как заставить ее проверить правильный интерфейс для добавления плагина. Не могли бы вы опубликовать сообщение, если бы не ссылка на ваш код, а может быть, немного пример кода для того, как вы это сделали? –