Freigeben über


Übersicht über das benutzerdefinierte Marshalling

Aktualisiert: November 2007

Der Marshaller stellt im wesentlichen eine Brücke zwischen der Funktionalität einer alten und einer neuen Schnittstelle her. Mithilfe von benutzerdefiniertem Marshallen können Clients, die von Ihnen für die Arbeit mit alten Schnittstellen ausgelegt waren, auch mit Servern arbeiten, die neue Schnittstellen implementieren. Durch benutzerdefiniertes Marshallen können Clients, die für die Arbeit mit neuen Schnittstellen ausgelegt sind, auch mit Servern arbeiten, die alte Schnittstellen verfügbar machen.

Statt den Interop-Marshaller zu verwenden, können Sie einen benutzerdefinierten Marshaller für eine Schnittstelle entwerfen, der unterschiedliches Marshallverhalten initialisiert oder die Schnittstelle für COM auf eine andere Weise verfügbar macht. Durch die Verwendung eines benutzerdefinierten Marshallers können Sie den Unterschied zwischen neuen .NET-Komponenten und vorhandenen COM-Komponenten minimieren.

Sie können beispielsweise eine verwaltete Schnittstelle namens INew entwerfen. Wenn diese Schnittstelle für COM durch einen Standard-CCW (COM Callable Wrapper) verfügbar gemacht wird, verfügt die Schnittstelle über dieselben Methoden wie die verwaltete Schnittstelle und verwendet die im Interop-Marshaller eingebauten Marshallregeln. Angenommen, eine bekannte COM-Schnittstelle namens IOld stellt bereits dieselbe Funktionalität bereit wie die Schnittstelle INew. Durch die Initialisierung eines benutzerdefinierten Marshallers können Sie eine nicht verwaltete Implementierung von IOld bereitstellen, die einfach die Aufrufe an die verwaltete Implementierung der Schnittstelle INew delegiert. Der benutzerdefinierte Marshaller verhält sich im wesentlichen wie eine Brücke zwischen der verwalteten und der nicht verwalteten Schnittstelle.

Beachten Sie, dass benutzerdefinierte Marshaller nicht aufgerufen werden, wenn der Aufruf von der verwalteten Seite an die nicht verwaltete Seite einer auf Dispatch beschränkten Schnittstelle erfolgt.

Siehe auch

Konzepte

Definieren des Marshallingtyps

Implementieren der ICustomMarshaler-Schnittstelle

Verwenden eines Ersatzmarshallers