Usando tipos COM em código gerenciado

Tipos de COM são definidos em um assembly são como outros tipos gerenciados. Clientes gerenciados podem criar uma nova instância de um tipo COM da forma habitual e obter informações de classe por meio de metadados, como fariam com qualquer classe gerenciada. Sintaxe do método pode ser inspecionada por meio de um visualizador de objeto ou obtido usando reflexão, exatamente como ele pode fazer com qualquer classe gerenciada. Quando o objeto COM retorna uma falha HRESULT, o.Cliente do NET Framework captura uma exceção correspondente.

Há duas maneiras para seu aplicativo incluir o tipo de informação que permite a interoperação com tipos COM:

  • Usando os tipos de interoperabilidade incorporados: Começando com o .NET Framework versão 4, você pode instruir o compilador para incorporar informações de tipo de um assembly de interoperabilidade no executável. O compilador incorpora as informações de tipo que o aplicativo usa. Não é necessário implantar o assembly de interoperabilidade com o seu aplicativo. Esta é a técnica recomendada.

  • Implantar assemblies de interoperabilidade: Você pode criar uma referência padrão para um assembly de interoperabilidade. Nesse caso, o assembly de interoperabilidade deve ser implantado com o seu aplicativo. Se você empregar essa técnica, e você não estiver usando um componente particular, sempre deve fazer referência ao assembly de interoperabilidade primário (PIA) publicado pelo autor do componente COM que você pretende incorporar no seu código gerenciado. Para obter mais informações sobre como produzir e usar assemblies de interoperabilidade primária, consulte Primary Interop Assemblies.

Observação

Quando você usa tipos de interoperabilidade incorporados, você pode incorporá-las do assembly de interoperabilidade primária publicado pelo autor do componente COM.No entanto, não é necessário implantar o assembly de interoperabilidade primário com o seu aplicativo.

Usando os tipos de interoperabilidade incorporados reduz o tamanho do seu aplicativo, porque a maioria dos aplicativos não usam todos os recursos de um componente COM. O compilador é muito eficiente quando ele incorpora informações de tipo; Se seu aplicativo usa apenas alguns dos métodos em uma interface COM, o compilador não incorporar os métodos não utilizados. Quando um aplicativo que incorporou a informações de tipo interage com o outro aplicativo desse tipo ou interage com um aplicativo que usa um assembly de interoperabilidade primária, as idioma em tempo de execução usa tipo equivalência regras comuns para determinar se dois tipos com o mesmo nome representam o mesmo tipo COM.

Como obter e liberando uma referência a um objeto de COM em execução é como obter e liberando uma referência a qualquer outro objeto gerenciado em execução. Quando.Os clientes do NET Framework obter e liberar uma referência a um objeto COM, o runtime mantém a contagem de referência para o objeto COM, exatamente como faria em qualquer outro cliente de COM, e.Os clientes do NET Framework podem se comportar como se o objeto estava sujeitos a coleta de lixo, como fariam com qualquer outro objeto do servidor gerenciado.

Visual Studio torna fácil incorporar informações de tipo em um aplicativo ou suplemento. Para exemplos, veja Demonstra Passo a passo: A incorporação de informações de tipo de Assemblies de Microsoft Office (C# e Visual Basic) e Demonstra Passo a passo: Tipos de incorporação de Assemblies gerenciados (C# e Visual Basic).

Para ver exemplos de código que acompanham os tópicos desta seção, consulte COM amostra de interoperabilidade: .NET de cliente e servidor COM.

As regras para equivalência de tipo são discutidas em Digite a equivalência e tipos de interoperabilidade incorporados. No entanto, você não precisa saber essas regras para usar objetos COM.

Consulte também

Tarefas

Demonstra Passo a passo: A incorporação de informações de tipo de Assemblies de Microsoft Office (C# e Visual Basic)

Demonstra Passo a passo: Tipos de incorporação de Assemblies gerenciados (C# e Visual Basic)

Conceitos

Expondo componentes COM para o.NET Framework

Um Assembly COM tipos de inspeção

Ativar um objeto COM

Chamar métodos, propriedades e eventos

Considerações de design de interoperação

Wrappers COM