Обычно это достигается тем, что библиотеки плагинов определяют некоторую глобальную переменную типа структуры, которая содержит указатели на различные функции, которые вы можете вызывать.(Как установка, разборка и т. Д.) Во время функции установки они вызывали бы обратно в ваше приложение некоторую функцию «регистра», где они могли бы передать строку, представляющую имя класса, и указатель фабричной функции, который создастэкземпляр при выполнении.
Вы прячете это на некоторой карте, а когда пользователь вводит строку, вы смотрите на карту, чтобы увидеть, есть ли зарегистрированная фабричная функция.Если это так, просто назовите его.
Так что это не «истинное» отражение, но вы можете в некоторой степени вручную взломать его.См., Например, Pidgin, который позволяет задавать плагины протокола, которые могут содержать много записей в списке протоколов.
РЕДАКТИРОВАТЬ: Вот отличное руководство дляреализовать нечто подобное.Я больше человек С, поэтому я не могу ручаться за то, что это действительно круто или что-то в этом роде, но на первый взгляд это выглядит хорошо.Я делал подобные вещи в C на Linux, и базовый подход работает довольно хорошо.