В настоящее время я нахожусь в процессе перемещения некоторого кода из нативного C ++ в управляемый C ++ (чистый). Код включает взаимодействие с Windows Active Scripting. В настоящее время наш нативный код обеспечивает
класс с именем ObjectDispatch, который реализует IDispatch (используя ATL). Эта реализация класса запрашивает наш собственный нативный класс «Object» во время выполнения, чтобы определить, какие методы и свойства он поддерживает, а затем перенаправляет любые вызовы «IDispatch :: Invoke» к этому «Object».
Я видел примеры использования взаимодействия .NET COM, которые поддерживают 'IDispatch', однако эти реализации были либо получены из IDL, либо были основаны на спецификации.
класса .NET, ни один из которых не происходит во время выполнения.
Похоже, что .NET COM-взаимодействие может генерировать реализацию 'IDispatch'
во время компиляции, если вы используете следующий атрибут для данного класса:
[ClassInterface(ClassInterfaceType::AutoDispatch)]
Я предполагаю, что мог бы динамически генерировать класс во время выполнения, который поддерживает этот атрибут. Однако, прежде чем я попытаюсь это, мне интересно, если у кого-нибудь есть какие-либо идеи
как это может быть достигнуто с помощью аналогичных средств, которые использовались с собственным кодом.
Обратите внимание, что в настоящее время класс 'Object' остается как собственный класс.