Verwenden von IProvideClassInfo
Ein zu verbindende Objekt kann die Schnittstellen IProvideClassInfo und IProvideClassInfo2 bereitstellen, sodass seine Clients seine Typinformationen problemlos untersuchen können. Diese Funktion ist wichtig, wenn es um ausgehende Schnittstellen geht, die per Definition von einem Objekt definiert, aber von einem Client in einem eigenen Senkenobjekt implementiert werden. In einigen Fällen ist eine ausgehende Schnittstelle zur Kompilierzeit sowohl für das zu verbindende Objekt als auch für das Senkenobjekt bekannt. dies ist bei IPropertyNotifySink der Fall.
In anderen Fällen kennt jedoch nur das zu verbindende Objekt seine ausgehenden Schnittstellendefinitionen zur Kompilierzeit. In diesen Fällen muss der Client die Typinformationen für die ausgehende Schnittstelle abrufen, damit er dynamisch eine Senke bereitstellen kann, die die richtigen Einstiegspunkte unterstützt:
- Der Client listet die Verbindungspunkte auf, und ruft dann IConnectionPoint::GetConnectionInterface für jeden Verbindungspunkt auf, um die IIDs der ausgehenden Schnittstellen abzurufen, die vom verbindungsfähigen Objekt unterstützt werden.
- Der Client fragt das zu verbindende Objekt für eine der IProvideClassInfo-Schnittstellen ab.
- Der Client ruft Methoden in den IProvideClassInfo-Schnittstellen auf, um die Typinformationen für die ausgehende Schnittstelle abzurufen.
- Der Client erstellt ein Senkenobjekt, das die ausgehende Schnittstelle unterstützt.
- Der Prozess wird fortgesetzt, und der Client ruft IConnectionPoint::Advise auf, um seine Senke mit dem Verbindungspunkt zu verbinden.
In den Typinformationen markiert die Attributquelle eine Schnittstelle oder ein Dispinterface , das unter einer Coclass als ausgehende Schnittstelle aufgeführt ist. Die ohne dieses Attribut aufgeführten werden als eingehende Schnittstellen betrachtet.
Zugehörige Themen