Динамическое подключение dll в C#

Поговорим о динамическом подключении библиотек dll (Dynamic Link Library) к программе, разрабатываемой на языке программирования C#. Рассмотрим пример написания консольного клиента для dll-файла.

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

В статье “Как создать dll в Visual Studio” рассказывалось, как создавать dll-файлы, в частности и на языке C# (если вы не знаете как создавать dll, рекомендуем почитать ту статью). Там мы написали библиотеку dll, содержащую два метода: add и sub, которые складывают и вычитают два целых числа. Теперь разработаем консольный клиент для этой dll, продемонстрируем динамическое подключение этой библиотеки.

Сначала создадим в Visual Studio консольный проект на языке C#, и поместим в папку проекта Debug файл “dllcsharp.dll”.

Динамическое подключение dll в C# - vscode.ru

Перейдем к разработке программы. Для подключения dll нам понадобился пространство имен System.Reflection. Включим его в проект.

Пишем функцию main(). Загружаем dll-файл. Для этого необходимо создать объект класса Assembly.

Создаем новый объект класса и новый тип, используя название класса из библиотеки dllcsharp.dll.

Для вызова метода из библиотеки используется метод Invoke(Object, Object[]), аргументы которого, это – объект класса, для которого вызывается метод и Object[] – это аргументы, передаваемые в вызываемый метод.

Например, будем складывать числа 2 и 3. Определим их в программе.

Получим метод add из библиотеки dll.

Выполним его и выведем результат в консоль.

То же самое проделаем и с методом sub.

В итоге получится вот такая программа:

Демонстрация работы приложения представлена на рисунке ниже:

Клиент для dll на C# - vscode.ru

Если вы хотите скачать исходник программы, написанной в этой статье, то нажмите на кнопку:

Скачать исходник

 

Динамическое подключение dll в C#
4 (80%) 8 votes

Поделиться в соц. сетях:

2 комментария(ев) к статье “Динамическое подключение dll в C#

  1. dima13230

    А каким образом можно подключить dll, которая находится в другой папке, отличной от папки с программой? То есть в папке с программой есть другая папка – Lib. Как сделать чтобы библиотека грузилась оттуда?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">