Benutzerdefiniertes Marshalling

Ein 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 das Component Object Model (COM) auf eine andere Weise verfügbar macht. Durch die Verwendung eines benutzerdefinierten Marshallers können Sie den Unterschied zwischen neuen .NET Framework-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 sie über dieselben Methoden wie die verwaltete Schnittstelle und verwendet die im Interop-Marshaller eingebauten Marshallregeln. Angenommen, die bekannte COM-Schnittstelle 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.

Verwandte Themen

Titel

Beschreibung

Definieren des Marshallingtyps

Beschreibt das Vorbereiten der erforderlichen Schnittstellen für das Einrichten eines benutzerdefinierten Marshallers.

Implementieren der ICustomMarshaler-Schnittstelle

Beschreibt die Optionen beim Vorbereiten eines benutzerdefinierten Marshallers.

Verwenden eines Ersatzmarshallers

Beschreibt das Verwenden des MarshalAsAttribute-Attributs zum Einfügen eines benutzerdefinierten Marshallers.

Interop-Marshalling

Erläutert das Marshalling für COM-Interop und Plattformaufruf.

Verweise

System.Runtime.InteropServices.ICustomMarshaler

System.Runtime.InteropServices.MarshalAsAttribute