Partilhar via


Várias interfaces duas

Convém agrupar sistema autônomo vantagens de uma interface dupla (ou seja, a flexibilidade de tanto vtable vinculação tardia, assim, tornando a classe disponível para linguagens sistema autônomo C++) com sistema autônomo técnicas de herança múltipla.

Embora seja possível expor várias interfaces duplas em um único objeto COM, não é recomendável.Se houver várias interfaces duas, deve haver apenas um IDispatch interface exposta. sistema autônomo técnicas disponível para garantir que esse é o caso executam penalidades sistema autônomo a perda de função ou código maior complexidade.O desenvolvedor considerando essa abordagem deve avaliar cuidadosamente as vantagens e desvantagens.

Expor uma interface IDispatch única

É possível expor várias interfaces duplas em um único objeto derivando de especializações em dois ou mais de IDispatchImpl. No entanto, se você permitir que os clientes consultar o IDispatch interface, você precisará usar o COM_INTERFACE_ENTRY2 macro (or COM_INTERFACE_ENTRY_IID) Para especificar qual classe base para a implementação de IDispatch.

COM_INTERFACE_ENTRY2(IDispatch, IMyDualInterface)

Porque apenas um IDispatch interface é exposta, os clientes podem acessar somente os objetos por meio do IDispatch interface não poderão acessar os métodos ou propriedades em qualquer Outros interface.

Combinar várias interfaces duplos em uma implementação única de IDispatch

ATL não fornece qualquer suporte para combinar várias interfaces duplos em uma implementação única de IDispatch. No entanto, há várias abordagens conhecidas para combinar manualmente sistema autônomo interfaces, sistema autônomo a criação de uma classe de modelo que contém uma união do separado IDispatch interfaces, criando um novo objeto para executar o QueryInterface função ou usando uma implementação baseada em typeinfo dos objetos aninhados para criar o IDispatch interface.

Essas abordagens têm problemas com possíveis colisões de namespace, bem sistema autônomo complexidade do código e facilidade de manutenção.Não é recomendável que você criar várias interfaces duplos.

Consulte também

Conceitos

Duas interfaces e ATL