Внешняя компонента v7CLR.dll позволяет создавать в 1с объекты .NET(CLR) и предоставляет доступ к их свойствам и методам.
ВК написана по технологии Rainbow и не требует регистрации в реестре.
Отличительные особенности:
- работает напрямую с CLR, что в некоторых случаях в несколько раз быстрее чем через CCW. т.е. отсутствуют промужуточные прокладки между 1С и CLR (BLContext -> IDispatch -> CCW -> CLR)
- позволяет создавать объекты CLR-классов незарегистрированных для COM-Interop, т.е. не нужно выполнять regasm для используемых сборок
- позволяет создавать объекты CLR-классов помеченных атрибутом ComVisible(false), что невозможно при использовании CLR-классов через COM-Callable Wrapper(CCW)
- позволяет вызывать перегруженные методы CLR-классов, что также невозможно при использовании CCW
- позволяет создавать объекты классов, не имеющих публичного конструктора по умолчанию
ВК перехватывает вызов системной функции СоздатьОбъект и если первым символом в имени
типа является "!", создает объект CLR-типа.
Для классов, находящихся в mscorlib.dll можно указывать только имя типа(включая все пространства имен).
Для остальных классов должно использоваться AssemblyQualifiedName
msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname.aspx.
Например так
Массив=СоздатьОбъект("!System.Collections.ArrayList");
Пингер=СоздатьОбъект("!System.Net.NetworkInformation.Ping, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
Для перегруженных методов ВК использует переименование методов, по следующей схеме:
- перегруженные методы упорядочиваются по количеству параметров
- для перегруженных методов с одинаковым количеством параметров разных типов порядок не определен
- имя первого после упорядочивания метода остается неизменным
- ко всем последующим методам добавляется номер начиная с 2
Внимание! Имена всех методов и свойств
регистрозависимы.
Во вложении сама компонента, обработка с тестами и кратким примером использования и краткое описание.Сравнение скорости работы v7CLR и CCW:
Цитата:Установка свойства CCW: 425 мс
Установка свойства v7CLR: 54 мс
Чтение свойства CCW: 406 мс
Чтение свойства v7CLR: 49 мс
Вызов метода CCW: 392 мс
Вызов метода v7CLR: 102 мс
Тесты выполнялись в цикле 10 000 раз.
Для тестов были использованы простейшие свойства и методы, чтобы время выполнения managed-кода оказывало меньшее влияние на измерения.
Планы по развитию:
- Реализовать фабрику классов, при помощи которой можно будет создавать объекты типов, не имеющих публичного конструктора по умолчанию.
- реализовать работу с value-типами и перечислениями
- работа со статическими методами абстрактных классов.
- работа с событиями
- возможно реализация CLR-оберток для некоторых внутренних классов 1с, чтобы упростить написание CLR-плагинов к 1С
скачать компоненту можно тут:
http://code.google.com/p/v7clr/