Общие сведения о взаимодействии. (Руководство по программированию в C#)
В разделе описываются методы для разрешения взаимодействия между управляемым кодом C# и неуправляемым кодом.
Вызов неуправляемого кода
Вызов неуправляемого кода — это служба, которая позволяет управляемому программному коду вызывать неуправляемые функции, реализуемые в библиотеках динамической компоновки (DLL), например, функции библиотек Microsoft Win32 API.Вызов неуправляемого кода обнаруживает и вызывает экспортируемую функцию и при необходимости выполняет маршалинг ее аргументов (целых чисел, строк, массивов, структур и так далее) через границы взаимодействия.
Дополнительные сведения см. в разделах Использование неуправляемых функций DLL и Практическое руководство. Использование вызова неуправляемого кода для воспроизведения звукового файла (Руководство по программированию на C#).
Примечание |
---|
За управление доступом к ресурсам системы отвечает среда CLR (среда CLR).При вызове неуправляемого кода вне среды CLR этот механизм защиты не задействуется, в связи с чем возникает угроза безопасности.Например, неуправляемый код может напрямую обращаться к ресурсам неуправляемого кода, не используя механизмы обеспечения безопасности среды CLR.Дополнительные сведения см. в разделе Безопасность .NET Framework. |
Взаимодействие C++
Можно использовать взаимодействие C++, также известное как механизм "It Just Works" (IJW), чтобы создать программу-оболочку для собственного класса C++, чтобы он мог использоваться в коде, созданном в C# или на другом языке .NET Framework.Чтобы это сделать, необходимо написать код C++, чтобы создать программу-оболочку для собственного компонента DLL или COM.В отличие от других языков .NET Framework, Visual C++ поддерживает функцию взаимодействия, которая позволяет управляемому и неуправляемому коду находиться в одном приложении и даже в одном файле.Затем выполняется построение кода C++ с помощью переключателя компилятора /clr, чтобы получить управляемую сборку.Наконец, добавляется ссылка на сборку в проекте С# и используются объекты с оболочкой, так же как при использовании других управляемых классов.
Предоставление компонентов COM для C#
Компонент COM можно получить из проекта C#.Для этого необходимо выполнить следующие шаги:
Найдите компонент COM для использования и зарегистрируйте его.Используйте файл regsvr32.exe для регистрации или отмены регистрации COM DLL.
Добавьте к проекту ссылку на компонент COM или библиотеку типов.
При добавлении ссылки Visual Studio использует Tlbimp.exe (программа экспорта библиотек типов), принимающее библиотеку типов в качетстве входных данных, для вывода сборки взаимодействия .NET Framework.Сборка, также называемая "вызываемая оболочка времени выполнения" (RCW) содержит управляемые классы и интерфейсы, которые являются оболочкой для COM-классов и интерфейсов, находящихся в библиотеке типов.Visual Studio добавляет к проекту ссылку на созданную сборку.
Создайте экземпляр класса, определенного в вызываемой оболочке времени выполнения.Это, в свою очередь, приведет к созданию экземпляра объекта COM.
Используйте объект так же, как используются другие управляемые объекты.Когда объект удаляется сборкой мусора, экземпляр объекта COM также удаляется из памяти.
Дополнительные сведения см. в разделе Предоставление клиентам .NET Framework доступа к COM-компонентам.
Предоставление C# для COM
Клиенты COM могут получить типы C#, которые были предоставлены должным образом.Основные шаги для предоставления типов C# следующие:
Добавьте в проект C# атрибуты взаимодействия.
Сборку COM можно сделать видимой, изменив свойства проекта Visual C#.Дополнительные сведения см. в разделе Диалоговое окно "Сведения о сборке".
Создайте библиотеку типов COM и зарегистрируйте ее для использования COM.
Можно изменить свойства проекта Visual C#, чтобы автоматически зарегистрировать сборку C# для COM-взаимодействия.Visual Studio использует Regasm.exe (средство регистрации сборок), используя параметр командной строки /tlb, который принимает управляемую сборку в качестве входных данных, для создания библиотеки типов.Эта библиотека типов описывает типы public в сборке и добавляет в реестр параметры, чтобы клиенты COM могли создавать управляемые классы.
Дополнительные сведения см. в разделах Предоставление COM-клиентам доступа к компонентам .NET Framework и Пример COM-класса (Руководство по программированию на C#).
См. также
Основные понятия
Руководство по программированию на C#
Другие ресурсы
Повышение производительности Взаимодействия
Знакомство с com-взаимодействием
Маршалинг между управляемым и неуправляемым кодом