Использование типов COM (взаимодействие) в пакетах Dynamo
Общие сведения о типах взаимодействия
Какие типы моделей COM существуют? См. страницу https://learn.microsoft.com/ru-ru/windows/win32/com/the-component-object-model.
Стандартный способ использования типов COM в C# заключается в ссылке на первичные сборки взаимодействия (по сути, большой набор API) и их поставке вместе с пакетом.
В качестве альтернативы можно внедрить основные сборки взаимодействия (PIA) в управляемую сборку. В основном сюда входят только те типы и элементы, которые фактически используются управляемой сборкой. Однако у этого подхода есть недостатки, например проблемы с эквивалентностью типов.
Эта проблема подробно описана в следующей статье:
Управление эквивалентностью типов в Dynamo
Dynamo делегирует эквивалентность типов среде выполнения .NET. Например, два типа с одинаковым именем и пространством имен, но в разных сборках, не будут считаться эквивалентными, и при загрузке конфликтующих сборок в Dynamo выдается ошибка. Что касается типов взаимодействия, в Dynamo выполняется проверка их эквивалентности с помощью API IsEquivalentTo
Недопущение конфликтов между встроенными типами взаимодействий
Некоторые пакеты уже были созданы со встроенными типами взаимодействия (например, CivilConnection). Загрузка двух пакетов со встроенными сборками взаимодействия, которые не считаются эквивалентными (разные версии, как определено здесь), приведет к ошибке загрузки пакета package load error
. В связи с этим мы предлагаем разработчикам пакетов использовать динамическое связывание (также называемое отложенным связыванием) для типов взаимодействия (решение также описано здесь).
Можно последовать этому примеру:
Last updated