自定义标准包装
本主题说明用来自定义标准运行时可调用包装和 COM 可调用包装的过程。
运行时可调用包装
当 .NET 客户端激活 COM 对象时,运行时就会生成一个运行时可调用包装 (RCW) 实例来包装 COM 类型。 如下图所示,运行时使用从导入的 COM 类型库中获取的元数据来生成 RCW。 该包装将根据互用封送处理服务所建立的规则来封送数据。
生成 RCW 和调用方法
有两种自定义 RCW 的方法。 如果可以修改接口定义语言 (IDL) 源,就可以应用类型库文件 (TLB) 特性并导入类型库。 或者,您可以将互用特定特性应用于导入的类型并生成新的程序集。 是否支持自定义标准的 RCW 将受到这些特性的限制。 有关说明,请参见如何:自定义运行时可调用包装。
COM 可调用包装
COM 可调用包装 (CCW) 可向 COM 公开 .NET Framework 对象。 通过将托管项目编译到程序集 DLL 中,可以自动创建在描述程序集中的每个类型时所需的元数据。 每当 COM 客户端激活托管对象时,运行时就会使用此元数据来生成 CCW。
要自定义 CCW,请将互用特定特性应用于托管源代码并将该源编译到程序集中,如下图所示。 在此示例中,Tlbexp.exe 将托管类型转换为 COM。
生成 CCW 和调用方法
通过将特性应用于代码,可以更改互用封送处理服务范围内的接口和数据封送行为。 例如,您可以控制作为参数传递给方法的数据的格式。 还可以控制向 COM 公开程序集中的哪些类型。