Freigeben über


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

RCW mit Schnittstellen

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:

  • Objektidentität

    Common Language Runtime unterscheidet zwischen den COM-Objekten, indem der Wert der Schnittstelle IUnknown für jedes Objekt verglichen wird.

  • Typcoertion

    Der RCW erkennt die dynamische Typermittlung, die durch die QueryInterface-Methode ausgeführt wird.

  • Verwaltung der Lebensdauer

    Unter Verwendung der QueryInterface-Methode erhält der RCW einen Verweis auf ein nicht verwaltetes Objekt und hält diesen aufrecht, bis zur Laufzeit eine Garbage Collection auf den Wrapper durchgeführt wird. Dadurch wird das nicht verwaltete Objekt freigegeben.

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