Marshallen von ausgewählten Schnittstellen
Die Hauptaufgabe des RCW (Runtime Callable Wrapper) besteht darin, die Unterschiede zwischen den verwalteten und nicht verwalteten Programmiermodellen unsichtbar zu machen. Um einen nahtlosen Übergang zu gewährleisten, beansprucht der RCW ausgewählte COM-Schnittstellen, ohne diese für den .NET-Client verfügbar zu machen. Die folgende Abbildung verdeutlicht diesen Mechanismus.
COM-Schnittstellen und der RCW
Ein RCW, der als früh gebundenes Objekt erstellt wurde, stellt einen bestimmten Typ dar. Dieser implementiert die Schnittstellen für das COM-Objekt und macht die Methoden, Eigenschaften und Ereignisse der Schnittstellen des Objekts verfügbar. In der Abbildung macht der RCW die Schnittstelle INew verfügbar, beansprucht jedoch die Schnittstellen IUnknown und IDispatch. Darüber hinaus zeigt der RCW dem .NET-Client alle Member der Schnittstelle INew an.
Der RCW beansprucht die in der folgenden Tabelle aufgelisteten Schnittstellen. Diese werden durch das umschlossene Objekt verfügbar gemacht.
Schnittstelle |
Beschreibung |
---|---|
IDispatch |
Regelt späte Bindung an COM-Objekte durch Reflektion. |
IErrorInfo |
Stellt eine Textbeschreibung des Fehlers und der Fehlerquelle, eine Hilfedatei, den Hilfekontext und die GUID der Schnittstelle bereit, die den Fehler definiert hat (bei .NET-Klassen immer GUID_NULL). |
IProvideClassInfo |
Wenn das umschlossenene COM-Objekt IProvideClassInfo implementiert, extrahiert der RCW die Typinformation aus dieser Schnittstelle, um eine bessere Typidentität bereitzustellen. |
IUnknown |
Wird verwendet für Objektidentität, Typcoertion und Verwaltung der Lebensdauer:
|
Der RCW beansprucht optional die in der folgenden Tabelle aufgelisteten Schnittstellen, die durch das umschlossene Objekt verfügbar gemacht werden.
Schnittstelle |
Beschreibung |
---|---|
IConnectionPoint und IConnectionPointContainer |
Der RCW konvertiert Objekte, die Ereignisformate für Verbindungspunkte gegenüber Delegate-basierten Ereignissen verfügbar machen. |
IDispatchEx |
Wenn die Klasse IDispatchEx implementiert, implementiert der RCW IExpando. Die IDispatchEx-Schnittstelle ist eine Erweiterung der IDispatch-Schnittstelle. Im Gegensatz zu IDispatch ermöglicht diese Schnittstelle Enumeration, Addition, Löschen und den Aufruf von Membern unter Berücksichtigung von Groß-/Kleinschreibung. |
IEnumVARIANT |
Aktiviert COM-Typen, die die Behandlung von Enumerationen als Auflistungen unterstützen. |
Siehe auch
Konzepte
Runtime Callable Wrapper (RCW)
Qualifizieren von .NET-Typen für die Interoperation
Weitere Ressourcen
Zusammenfassung: Konvertieren einer Assembly in eine Typbibliothek