Verwenden von IProvideClassInfo
Ein verbindungsfähiges Objekt kann die Schnittstellen IProvideClassInfo und IProvideClassInfo2 anbieten, damit seine Clients seine Typinformationen leicht untersuchen können. Diese Funktion ist wichtig beim Umgang mit ausgehenden Schnittstellen, die definitionsgemäß durch ein -Objekt definiert, aber von einem Client in einem eigenen Senkenobjekt implementiert werden. In einigen Fällen ist eine ausgehende Schnittstelle zur Kompilierzeit sowohl dem verbindungsierbaren Objekt als auch dem Senkenobjekt bekannt. dies ist bei IPropertyNotifySink der Fall.
In anderen Fällen kennt jedoch nur das verbindende Objekt seine ausgehenden Schnittstellendefinitionen zur Kompilierzeit. In diesen Fällen muss der Client die Typinformationen für die ausgehende Schnittstelle abrufen, damit er wie folgt dynamisch eine Senke bereitstellen kann, die die richtigen Einstiegspunkte unterstützt:
- Der Client listet die Verbindungspunkte auf und ruft dann für jeden Verbindungspunkt IConnectionPoint::GetConnectionInterface auf, um die IIDs ausgehender Schnittstellen zu erhalten, die vom verbindungsierbaren Objekt unterstützt werden.
- Der Client fragt das verbindungsfähige Objekt nach einer der IProvideClassInfo-Schnittstellen ab.
- Der Client ruft Methoden in den IProvideClassInfo-Schnittstellen auf, um die Typinformationen für die ausgehende Schnittstelle zu erhalten.
- 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 Disp-Schnittstelle, die unter einer Co-Klasse als ausgehende Schnittstelle aufgeführt ist. Diejenigen, die ohne dieses Attribut aufgelistet sind, werden als eingehende Schnittstellen betrachtet.