Загортаємо c # -клас в com

Загортаємо C # -клас в COM

Нехай у нас є C # -клас, який робить що-небудь корисне, наприклад:

Давайте створимо для цього класу COM-інтерфейс, щоб його функції можна було використовувати в інших місцях. В кінці подивимося на використання цього класу в середовищі Delphi.

Для початку потрібно піти в властивості проекту та на вкладці Build поставити галочку навпроти Register for COM interop:

Загортаємо c # -клас в com

Далі створюємо інтерфейс для нашого класу:

Клас і інтерфейс потрібно позначити поруч атрибутів: слід вказати для них унікальні GUID -и, вказати ComVisible (true). а для класу також додати атрибут ClassInterface (ClassInterfaceType.None):

Уже майже все готово! Можна збирати готовий варіант нашої збірки. Завдяки галочці Register for COM interop COM-компнентов сам зареєструється в системі, але реєстрацію можна провести і руками. Робиться це за допомогою утиліти RegAsm. яку можна знайти в "C: \ Windows \ Microsoft.NET \ Framework \ v<номер нужной версии>". За допомогою аргументу / tlb можна попутно створити супутній tlb-файл. Скасувати реєстрацію збірки допоможе атрибут / u. Отже, виконаємо команду (будемо вважати, що назва проекту і відповідної dll - ComCalculator):

Дуже добре, тепер наш компонент зареєстрований! Давайте відкриємо Delphi і спробуємо його використовувати. Після створення нового проекту (нехай це буде звичайний WinForms-проект) потрібно імпортувати в нього ComCalculator. Вибираємо з меню Project пункт Import Type Library. У списку знаходимо ComCalculator і тиснемо Install:

Загортаємо c # -клас в com

У файлі Unit1.pas необхідно додати ComCalculator_TLB в розділ uses. Після цього у вас можуть бути проблеми з компіляцією mscorlib_TBL.pas. Якщо це так, то просто видаліть посилання на нього з розділу uses файлу ComCalculator_TLB.pas.

Тепер спробуємо використовувати наш COM-компонент. Будемо це робити прямо в конструкторі форми. Тіло конструктора буде містити дві нехитрі рядки: в першій ми створимо екземпляр класу TCalculator. а в другій викличемо метод Sum. результат обчислень покажемо за допомогою процедури ShowMessage.

Запустивши додаток, ви зможете побачити з'явилося віконце з цифрою 3 і порадіти.

Для більш складних варіантів створення COM-об'єктів рекомендуються до вивчення наступні статті: