Compartilhar via


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

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

Invocação de plataforma

Invocação de plataforma é um serviço que permite que o código gerenciado para chamar funções não gerenciadas que são 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 Como: Use invocação de plataforma para reproduzir um arquivo Wave (guia de programação do 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 esse mecanismo de segurança e, portanto, apresenta um risco de segurança.Por exemplo, o código não gerenciado pode chamar recursos em 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 por código tiver sido criado no 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 dos outros.Idiomas do NET Framework, Visual C++ tem interoperabilidade de suporte que habilita e gerenciados código seja localizado no mesmo aplicativo e até mesmo no mesmo arquivo.Em seguida, criar o código C++ usando o /clr o comutador de compilador para produzir um assembly gerenciado.Finalmente, você pode adiciona uma referência ao assembly no projeto C# e usa os objetos dispostos exatamente como você usaria a outras classes gerenciadas.

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.

    Ao adicionar a referência, Visual Studio usa o Tlbimp. exe (importador da biblioteca), que utiliza uma biblioteca de tipos como entrada, saída um.Assembly de interoperabilidade do NET Framework.O assembly, também denominado um runtime callable wrapper (RCW), contém classes gerenciadas e interfaces que quebram automaticamente 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ê pode tornar um assembly COM visível modificando Visual C# propriedades do projeto.Para obter mais informações, consulte Caixa de diálogo de informações de assembly.

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

    Você pode modificar Visual C# propriedades para registrar automaticamente o assembly de interoperabilidade COM C# do projeto.Visual Studiousa a Regasm (ferramenta de registro de Assembly), usando o /tlb opção de linha de comando, o que leva a um assembly gerenciado como entrada, para gerar uma biblioteca de tipos.Esta biblioteca de tipos descreve o public tipos no assembly e adiciona as entradas do registro para que clientes COM podem criar classes gerenciadas.

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

Consulte também

Conceitos

Guia de programação do C#

Outros recursos

Melhorando o desempenho de interoperabilidade

Introdução ao COM Interop

Marshaling entre gerenciados e código não gerenciado

Interoperar com código não gerenciado

Interoperabilidade de COM avançados