Chamar métodos, propriedades e eventos

A.NET cliente pode chamar métodos em um objeto do active COM, ajustar suas propriedades e capturar eventos no servidor de origem. O coclass de empréstimo (C++ não gerenciado, ATL) expõe métodos e propriedades que aparecem como exemplos de código nesta seção.

Métodos de chamada

Chamar métodos em um objeto COM a partir do código gerenciado é exatamente como chamar métodos em um objeto gerenciado. Como sempre, componentes COM exponham funcionalidade por meio de interfaces, você tem a opção de chamar métodos na interface ou diretamente em coclass a COM. Um coclass expõe apenas os membros expostos por sua interface padrão. O exemplo de código a seguir chama o GetFirstPmtDistribution método diretamente no coclass importados:

MorePmts = ln.GetFirstPmtDistribution(ln.Payment, Balance, _
               Principal, Interest)
MorePmts = ln.GetFirstPmtDistribution(ln.Payment, out Balance, 
               out Principal, out Interest);

Interoperabilidade COM empacota os tipos de dados para você. Por exemplo, se você passar o tipo de System. String a um objeto COM, a interoperabilidade COM converte o tipo de BSTR.

Parâmetros são marcados como [out retval] em uma conversão de biblioteca de tipo para o método retornar valores. O processo de conversão remove esses parâmetros na assinatura gerenciada. Por padrão, o runtime lança uma exceção para código gerenciado pelo mapeamento falha HRESULT para uma exceção gerenciada equivalente.

Obtendo e definindo propriedades

Interfaces COM podem incluir propriedades como membros de interface. Você pode obter ou definir uma propriedade exposta por um objeto COM a forma de obter e definir as propriedades expostas por uma classe gerenciada. Interfaces COM e coclasses de importados como metadados em um assembly expor propriedades e métodos acessadores para cada propriedade. O seguinte código de exemplo define o OpeningBalance propriedade:

ln.OpeningBalance = Convert.ToDouble(Args(1))
ln.OpeningBalance = Convert.ToDouble(Args[0]);

Para obter detalhes de conversão de propriedade, consulte Conversão de membro importado. Para obter uma descrição mais geral de propriedades da.NET Framework, consulte Visão geral sobre propriedades.

Tratamento de eventos

A.Cliente de rede pode manipular eventos gerados por um servidor COM a maneira como ele lida com qualquer outro evento gerenciado. Quando você importa a biblioteca de tipos do servidor, o processo de conversão cria delegados que você se conectar a seus manipuladores de eventos. Para obter detalhes sobre esse processo, consulte De manipulação de eventos gerados por uma fonte COM.

Observe que objetos COM que elevar eventos dentro de um.NET cliente exigem duas coleções de coletor de lixo (GC) antes de serem lançados. Isso é causado por um ciclo de referência que ocorre entre objetos COM e clientes gerenciados. Se você precisar liberar explicitamente um objeto COM deve chamar o Collect método duas vezes.

Consulte também

Tarefas

Como: Map HRESULTs and Exceptions

Conceitos

Usando tipos COM em código gerenciado

Conversão de membro importado

Visão geral sobre propriedades

Exemplo de interoperabilidade COM: .NET de cliente e servidor COM

Interop Marshaling