Partilhar via


Visão geral da interoperabilidade (guia de programação de C#)

O tópico descreve métodos para habilitar a interoperabilidade entre o código gerenciado do C# e o código não gerenciado.

Invocação de plataforma

Invocação de plataforma é um serviço que permite código gerenciado para chamar funções não gerenciadas implementadas em bibliotecas de vínculo dinâmico (DLLs), tais como aquelas em que o Microsoft Win32 API. Ele localiza e chama uma função exportada e controla seus argumentos (números inteiros, seqüências de caracteres, matrizes, estruturas e assim por diante) dentro do limite de operação conforme necessário.

Para obter mais informações, consulte Consumir funções DLL não gerenciada e How to: Use invocação de plataforma para reproduzir um som Wave Arquivo (guia de programação C#).

ObservaçãoObservação

O Common Language Runtime (CLR) (CLR) gerencia o acesso aos recursos do sistema. Chamar código não gerenciado que está fora do CLR ignora o mecanismo de segurança e, portanto, apresenta um risco de segurança. Por exemplo, o código não gerenciado pode chamar recursos de código não gerenciado, diretamente, ignorando os mecanismos de segurança do CLR. Para obter mais informações, consulte .NET Framework Security.

Interoperabilidade de C++

Você pode usar a interoperabilidade de C++, também conhecido como ele apenas Works (IJW), para dispor de uma classe do C++ nativa para que ele pode ser consumido pelo código que é criado em C# ou em outro.Idioma do NET Framework. Para fazer isso, você pode escrever código C++ para dispor de um componente nativo de DLL ou COM. Ao contrário de outros.Idiomas do NET Framework, Visual C++ tem suporte de interoperabilidade que permite que o código gerenciado e pode ser localizado no mesmo aplicativo e até mesmo no mesmo arquivo. Em seguida, criar o código C++ usando o /clr Alternar do compilador para produzir um assembly gerenciado. Finalmente, adicione uma referência ao assembly no projeto C# e usar os objetos dispostos exatamente como você usaria a outras classes gerenciadas.

Para obter mais informações, consulte Como: Dispor de classe nativa para uso por C# e Usar a interoperabilidade de C++ (PInvoke implícito).

Expondo componentes COM para C#

Você pode consumir um componente COM de um projeto C#. As etapas gerais são:

  1. Localize um componente COM para usar e registrá-lo. Use Regsvr32. exe para registrar ou un–register uma DLL de COM.

  2. Adicione ao projeto uma referência para a biblioteca de tipo ou componente COM.

    Quando você adicionar a referência, Visual Studio usa o Tlbimp. exe (importador da biblioteca), que leva a uma biblioteca de tipos como entrada, saída um.NET Framework o assembly interop. O assembly, também denominado um runtime callable wrapper (RCW), contém as classes gerenciadas e interfaces que dispor as classes COM e interfaces que estão na biblioteca de tipos. Visual Studioadiciona ao projeto uma referência ao assembly gerado.

  3. Crie uma instância de uma classe definida no RCW. Isso, por sua vez, cria uma instância do objeto COM.

  4. Use o objeto, assim como você usa outros objetos gerenciados. Quando o objeto é recuperado pela coleta de lixo, a instância do objeto COM também é liberada da memória.

Para obter mais informações, consulte Expondo componentes COM para o.NET Framework.

Expondo C# para COM

Clientes COM podem consumir os tipos de C# que foram expostos corretamente. As etapas básicas para expor os tipos de C# são os seguintes:

  1. Adicione atributos de interoperabilidade no projeto C#.

    Você poderá tornar visível um assembly COM modificando Visual C# Propriedades do projeto. Para obter mais informações, consulte Caixa de diálogo Assembly Information.

  2. Gerar uma biblioteca de tipos COM e registrá-lo para uso do COM.

    Você pode modificar Visual C# Propriedades do projeto para registrar automaticamente o assembly C# para COM interop. Visual Studiousa a Regasm. exe (ferramenta de registro de Assembly), usando o /tlb opção de linha de comando, que leva a um assembly gerenciado como entrada, para gerar uma biblioteca de tipo. Descreve a esta biblioteca de tipos do public tipos no assembly e adiciona as entradas do registro para que clientes COM podem criar classes gerenciadas. Para obter mais informações, consulte Como: Registrar um componente para interoperabilidade COM.

Para obter mais informações, consulte Expondo.NET Framework para COM e Classe do exemplo COM (guia de programação de C#).

Consulte também

Conceitos

C# Programming Guide

Outros recursos

Melhorando o desempenho de interoperabilidade

Introdução ao COM Interop

de empacotamento entre gerenciados e código não gerenciado

Interoperação com Código Não Gerenciado

Interoperabilidade de COM avançadas

Interoperability in the .NET Compact Framework