Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Взаимодействие позволяет сохранять и использовать существующие инвестиции в неуправляемый код. Код, который выполняется под контролем среды CLR, является управляемым кодом, а код, который выполняется вне среды CLR, неуправляемый код. КОМПОНЕНТЫ COM, COM+, C++, компоненты ActiveX и API Microsoft Windows являются примерами неуправляемого кода.
.NET обеспечивает взаимодействие с неуправляемым кодом через службы вызова платформ, пространство имен System.Runtime.InteropServices, взаимодействие C++ и взаимодействие с COM (COM-interop).
Вызов платформенных функций
Вызов платформы — это служба, которая позволяет управляемому коду вызывать неуправляемые функции, реализованные в библиотеках динамических ссылок (DLL), таких как API Microsoft Windows. Он находит и вызывает экспортированную функцию и маршалирует свои аргументы (целые числа, строки, массивы, структуры и т. д.) через границу взаимодействия по мере необходимости.
Дополнительные сведения см. в разделе "Использование неуправляемых функций DLL " и "Как использовать вызов платформы для воспроизведения WAV-файла".
Замечание
Среда Common Language Runtime (CLR) управляет доступом к системным ресурсам. Вызов неуправляемого кода, который находится за пределами среды CLR, обходит этот механизм безопасности и, следовательно, представляет угрозу безопасности. Например, неуправляемый код может напрямую вызывать ресурсы в неуправляемом коде, обходя механизмы безопасности CLR. Дополнительные сведения см. в разделе "Безопасность" в .NET.
Интероперабельность C++
Для обертки класса на родном C++ можно использовать C++ interop, также известный как It Just Works (IJW). Взаимодействие C++ позволяет создавать код на языке C# или другом языке .NET для доступа к нему. Вы пишете код на C++, чтобы обернуть собственный DLL или COM компонент. В отличие от других языков .NET, Visual C++ поддерживает взаимодействие, которое включает управляемый и неуправляемый код в одном приложении и даже в том же файле. Затем вы создаете код C++ с помощью переключателя компилятора /clr для создания управляемой сборки. Наконец, вы добавите ссылку на сборку в проекте C# и используйте упакованные объекты так же, как и другие управляемые классы.
Доступ к COM-компонентам в C#
Компонент COM можно использовать в проекте C#. Общий порядок действий.
- Найдите com-компонент для использования и зарегистрируйте его. Используйте regsvr32.exe для регистрации или отмены регистрации библиотеки DLL COM.
- Добавьте в проект ссылку на com-компонент или библиотеку типов. При добавлении ссылки Visual Studio использует Tlbimp.exe (Импортёр библиотеки типов), который принимает библиотеку типов в качестве входных данных и создаёт сборку взаимодействия .NET. Сборка, также называемая вызываемой оболочкой среды выполнения (RCW), содержит управляемые классы и интерфейсы, которые оборачиваются вокруг классов и интерфейсов COM, находящихся в библиотеке типов. Visual Studio добавляет в проект ссылку на созданную сборку.
- Создайте экземпляр класса, определенного в RCW. Создание экземпляра этого класса создает экземпляр COM-объекта.
- Используйте объект так же, как и другие управляемые объекты. Когда объект удаляется сборщиком мусора, экземпляр COM-объекта также освобождается в памяти.
Дополнительные сведения см. в статье о предоставлении COM-компонентов платформе .NET Framework.
Предоставление доступа C# к COM
Клиенты COM могут использовать типы C#, которые были правильно предоставлены. Ниже приведены основные шаги для предоставления типов C#:
- Добавьте атрибуты взаимодействия в проект C#. Вы можете сделать сборку COM видимой, изменив свойства проекта C#. Дополнительные сведения см. в диалоговом окне "Сведения о сборке".
- Создайте библиотеку типов COM и зарегистрируйте ее для использования COM.
Свойства проекта C# можно изменить, чтобы автоматически зарегистрировать сборку C# для взаимодействия с COM. Visual Studio использует Regasm.exe (средство регистрации сборок) с помощью
/tlbпереключателя командной строки, который принимает управляемую сборку в качестве входных данных для создания библиотеки типов. Эта библиотека типов описываетpublicтипы в сборке и добавляет записи реестра, чтобы клиенты COM могли создавать управляемые классы.
Для получения дополнительной информации см. предоставление компонентов .NET Framework COM и пример COM-класса.