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