Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

Custom Marshaling Overview 

The marshaler essentially provides a bridge between the functionality of old and new interfaces. Custom marshaling enables clients that you designed to work with an old interface to also work with servers that only implement a new interface. Custom marshaling also enables clients built to work with a new interface to work with servers that expose the old interface.

Instead of using the interop marshaler, you can design a custom marshaler for an interface that introduces different marshaling behavior or exposes the interface to COM in a different way. By using a custom marshaler, you can minimize the distinction between new .NET components and existing COM components.

For example, suppose that you are developing a managed interface called INew. When exposed to COM through a standard COM callable wrapper, the interface has the same methods as the managed interface and uses the marshaling rules built into the interop marshaler. Further suppose that a well-known COM interface called IOld already provides the same functionality as the INew interface. By introducing a custom marshaler, you can provide an unmanaged implementation of IOld that simply delegates the calls to the managed implementation of the INew interface. The custom marshaler essentially acts as a bridge between the managed and unmanaged interfaces.

Note that custom marshalers are not invoked when calling from the managed side to unmanaged side on a dispatch only interface.

See Also

Community Additions

© 2015 Microsoft