Usando IProvideClassInfo
Um objeto conectável pode oferecer as interfaces IProvideClassInfo e IProvideClassInfo2 para que seus clientes possam examinar facilmente suas informações de tipo. Esse recurso é importante ao lidar com interfaces de saída, que, por definição, são definidas por um objeto, mas implementadas por um cliente em seu próprio objeto coletor. Em alguns casos, uma interface de saída é conhecida em tempo de compilação para o objeto conectável e o objeto coletor; é o caso de IPropertyNotifySink.
Em outros casos, no entanto, somente o objeto conectável conhece suas definições de interface de saída em tempo de compilação. Nesses casos, o cliente deve obter as informações de tipo para a interface de saída para que ele possa fornecer dinamicamente um coletor que suporte os pontos de entrada corretos, da seguinte maneira:
- O cliente enumera os pontos de conexão e, em seguida, para obter os IIDs de interfaces de saída suportadas pelo objeto conectável, chama IConnectionPoint::GetConnectionInterface para cada ponto de conexão.
- O cliente consulta o objeto conectável para uma das interfaces IProvideClassInfo.
- O cliente chama métodos nas interfaces IProvideClassInfo para obter as informações de tipo para a interface de saída.
- O cliente cria um objeto de coletor que oferece suporte à interface de saída.
- O processo continua e o cliente chama IConnectionPoint::Advise para conectar seu coletor ao ponto de conexão.
Nas informações de tipo, a origem do atributo marca uma interface ou dispinterface listada em uma coclasse como uma interface de saída. Aqueles listados sem esse atributo são considerados interfaces de entrada.
Tópicos relacionados