Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Подключить DLL

#c_sharp #wpf #dll


Пишу десктопное приложение на C#, которая по задумке должна подключать dll, уже будучи
скомпилированой и работающей.
Как это возможно реализовать? И возможно ли вообще :)    


Ответы

Ответ 1



Варианты предлагаю такие: Использовать MEF (как в ответе выше) Использовать MAF (как альтернатива, она может выгружать DLL налету) Использовать Prism Создать общую библиотеку с хорошо продуманным интерфейсом и классом (н-р InitPlugin); обязать ваши библиотеки иметь эту библиотеку и обращаться к нужным интерфейсам посредством Reflection. Для неуправляемого кода можно использовать очень интересную возможность: дело в том, что когда функция C# с атрибутом ImportDll обращается к библиотеке, она ищет ее в определенных местах (в системной папке и нек других), но если не найдет, то обязательно также посмотрит в CurrentDirectory. Устанавливая Environment.CurrentDirectory на нужные каталоги, можно добиться системы плагинов на неуправляемом уровне. Последний который приходит в голову, это компилить какие-нибудь алгоритмы прямо на лету через CSharp Compiler.

Ответ 2



Рассматривайте ваши бибилиотеки как "плагины" или расширения основной программы. Начиная с 4 версии фреймворка в платформу .NET включен Managed Extensibility Framework Платформа Managed Extensibility Framework, или MEF, – это библиотека для создания простых расширяемых приложений. Она позволяет разработчикам приложений находить и использовать расширения без каких-либо настроек. Кроме того, дает разработчикам расширений возможность легко инкапсулировать код и избежать использования ненадежных жестких зависимостей. MEF не только позволяет использовать зависимости повторно, но и дает возможности применять их в различных приложениях.

Комментариев нет:

Отправить комментарий