Share via


Simulieren von COM-Schnittstellen

Der CCW (COM Callable Wrapper) macht alle öffentlichen, für COM sichtbaren Schnittstellen, Datentypen und Rückgabewerte für COM-Clients verfügbar, wobei dies konsistent mit der durch COM erzwungenen schnittstellenbasierten Interaktion geschieht. Für einen COM-Client ist der Methodenaufruf für ein .NET Framework-Objekt identisch mit dem für ein COM-Objekt.

Zur Umsetzung dieses nahtlosen Ansatzes erstellt der CCW herkömmliche COM-Schnittstellen wie IUnknown und IDispatch. Wie die folgende Abbildung zeigt, hält der CCW einen einzelnen Verweis auf das von ihm umschlossene .NET-Objekt aufrecht. Der COM-Client und das .NET-Objekt interagieren über die Proxy- und Stubkonstruktion des CCW.

COM-Schnittstellen und der CCW

COM-Schnittstellen

Neben dem Verfügbarmachen der Schnittstellen, die explizit durch eine Klasse in der verwalteten Umgebung implementiert werden, stellt .NET Framework Implementierungen der COM-Schnittstellen zur Verfügung, die in der folgenden Tabelle für das Objekt aufgelistet sind. Eine .NET-Klasse kann das Standardverhalten überschreiben, indem sie ihre eigene Implementierung dieser Schnittstellen bereitstellt. Common Language Runtime stellt jedoch immer die Implementierung für die Schnittstellen IUnknown und IDispatch bereit.

Schnittstelle

Beschreibung

Idispatch

Stellt einen Mechanismus für die späte Typbindung bereit.

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

Ermöglicht COM-Clients den Zugriff auf die Schnittstelle ITypeInfo, die durch eine verwaltete Klasse implementiert wird.

IsupportErrorInfo

Dadurch kann ein COM-Client festlegen, ob das verwaltete Objekt die Schnittstelle IErrorInfo unterstützt. Ist dies der Fall, erhält der Client einen Zeiger auf das letzte Ausnahmeobjekt. Alle verwalteten Typen unterstützen die Schnittstelle IerrorInfo.

ItypeInfo

Stellt Typinformationen für eine Klasse bereit. Genau dieselbe Typinformation wird von Tlbexp.exe erstellt.

IUnknown

Stellt die Standardimplementierung der Schnittstelle IUnknown bereit. Damit verwaltet der COM-Client die Lebensdauer des CCW und stellt Typcoertion bereit.

Eine verwaltete Klasse kann auch die in der folgenden Tabelle beschriebenen COM-Schnittstellen bereitstellen.

Schnittstelle

Beschreibung

(_Klassenname) Klassenschnittstelle

Schnittstelle, die durch Common Language Runtime verfügbar gemacht wird, ohne expliziert definiert zu sein. Sie macht alle öffentlichen Schnittstellen, Methoden, Eigenschaften und Felder verfügbar, die explizit für ein verwaltetes Objekt angegeben sind.

IConnectionPoint und IconnectionPointContainer

Schnittstelle für Objekte, die Delegate-basierte Ereignisse hervorbringen (Schnittstelle zur Registrierung von Ereignisabonnenten).

IdispatchEx

Diese Schnittstelle wird durch Common Language Runtime zur Verfügung gestellt, wenn die Klasse IExpando implementiert. 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

Schnittstelle für Klassen von Auflistungstypen, die Objekte auflistet, wenn IEnumerable von der Klasse implementiert wird.

Siehe auch

Konzepte

COM Callable Wrapper (CCW)

Einführung in die Klassenschnittstelle

Verfügbarmachen von .NET Framework-Komponenten in COM