自定义封送处理

封送拆收器实质上是提供了新旧接口功能之间的互用渠道。 自定义封送拆收器使您设计的客户端既能够与旧接口协同工作,也能与仅实现新接口的服务器协同工作。 自定义封送拆收器还使所生成的客户端既能够与新接口协同工作,也能与公开旧接口的服务器协同工作。

除了使用互操作封送拆收器之外,还可以为接口设计自定义封送拆收器,以引入不同的封送处理行为或以不同的方式向组件对象模型 (COM) 公开接口。 通过使用自定义封送拆收器,您可以尽量减小新 .NET Framework 组件和现有 COM 组件之间的差异。

例如,假设您在开发一个名为 INew 的托管接口。 当通过标准的 COM 可调用包装向 COM 公开此接口时,该接口具有与托管接口相同的方法,并且采用内置于互操作封送拆收器中的封送处理规则。 现在假设有一个名为 IOld 的已知 COM 接口已经提供了与 INew 接口相同的功能。 通过引入自定义封送拆收器,可以提供 IOld 的非托管实现,它只需将调用委托给 INew 接口的托管实现。 自定义封送拆收器实质上充当了托管和非托管接口之间的互用渠道。

注意,在仅调度接口上从托管端向非托管端进行调用时,并不调用自定义封送拆收器。

相关主题

标题

说明

定义封送处理类型

描述如何准备自定义封送拆收器的设置过程中涉及的接口。

实现 ICustomMarshaler 接口

介绍准备自定义封送拆收器的过程中涉及的选项。

使用替换封送拆收器

介绍如何使用 MarshalAsAttribute 特性插入自定义封送拆收器。

互操作封送处理

描述如何对 COM 互操作和平台调用进行封送处理。

引用

System.Runtime.InteropServices.ICustomMarshaler

System.Runtime.InteropServices.MarshalAsAttribute