Метапрограммирование на C++: использование .NET Reflection для создания плагинов

Компонент .NET как плагин

Отладка приложений для Microsoft .NET и Microsoft Windows (+ CD-ROM): подробнее

Джон Роббинс
Отладка приложений для Microsoft .NET и Microsoft Windows (+ CD-ROM)

Рассмотрим, как можно использовать инструментарий .NET Framework для решения такой задачи: создание расширяемой за счет плагинов (подгружаемых dll) программной системы.

Решение основано на инструментах, собранных в пространстве имен System::Reflection. Вкратце алгоритм использования плагинов такой.

1. Просматриваем каталог (текущий или назначенный) в поисках файлов с расширением DLL.

2. Каждый найденный DLL файл пытаемся загрузить как сборку .NET (assembly).

3. Если загрузка удалась, то начинаем исследовать классы, объявленные в сборке. Используем средства .NET Reflection. Для каждого класса выделяем список его полей. Ищем метод с именем Get_Plugin_Type - он должен вернуть название плагина. Если такой метод найден и вернул строку, то значит мы загрузили плагин - заносим его в список.

4.  Когда необходимо обработать файл с помощью зарегистрированных плагинов, просматриваем список и у каждого плагина вызываем метод Can_Process_File - он получает имя файла и возвращает true, если может обработать файл. Тогда вызываем метод Go.

 

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

Проект для MS VisualStudio 2003 (13 Kb)

 

  © Mental Computing 2009  main page  rss  email  icq  download