Ich muss spät Bindung zu einem VB6 COM-Objekt von Drittanbietern in einer C# 3.5-Anwendung (um Versionsabhängigkeiten zu vermeiden, die wir derzeit haben). Die DLL, die zur Verfügung gestellt wurde, ist nicht konsumierbar auf den meisten nicht-späte Art aufgrund eines Fehlers, der Fehler verursacht, wenn wir versuchen, es normal zu verbrauchen. Derzeit verwenden wir einen benutzerdefinierten VB6-Wrapper, der die Sache sehr versionsspezifisch macht. Ich habe jedoch festgestellt, dass ich die Late-Binding verwenden kann, um auf Eigenschaften und Methoden zuzugreifen. Jetzt versuche ich, zu Ereignissen spät zu binden, aber alles, was ich gelesen habe, besagt, dass ich von der COM-Wrapper-Schnittstelle erben muss, um die Ereignissenken zu erstellen, die benötigt werden. Here is one such article.Wie zu spät COM-Ereignis ohne Schnittstelle
Also ist meine Frage, ob es möglich ist, spät gebundene Ereignisbehandlung durchzuführen, ohne einen Verweis auf die DLL zur Kompilierzeit zu haben?
UPDATE
Hier sind die Fehler, die ich mit dem VB6-Wrapper haben (die immer noch aktiv aktualisiert werden).
- In OleViewer, bekomme ich
konnte nicht ausgewählt decompile Artikel Fehler beim Laden geben Bibliothek/DLL. TYPE_E_CANTLOADLIBRARY ($ 80029C4A)
- In Visual Studio erhalte ich:
Könnte die Abhängigkeiten der COM Referenz "3rdPartyDLL" nicht bestimmen. Fehler beim Laden der Typbibliothek/DLL. (Ausnahme von HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))
Ich bin neugierig: Was sind die Fehler, die Sie sehen, wenn Sie versuchen, Ihr VB6-Objekt auf frühzeitige Weise zu verwenden? Ich habe viele VB6 COM-Komponenten geschrieben und hatte nie irgendwelche Probleme mit der Verwendung von ihnen in anderen Umgebungen (solange der Client COM unterstützt). Warum sollten Sie sich sogar für eine VB6-Komponente mit Versionsverwaltung beschäftigen - wird sie noch aktiv von ihrem Autor entwickelt? – xxbbcc
@xxbbcc Es wird immer noch aktiv entwickelt und ich aktualisiert, um die Fehler zu zeigen –
@WhozCraig: VB6 Ereignisse sind immer nur IDispatch basiert. – wqw