向 COM 公开 .NET Compact Framework 组件

更新:2007 年 11 月

可以向本机代码公开 .NET Compact Framework 组件,但是这种互操作性与 .NET Framework 全功能版相比存在区别。

公开托管组件

您可以向本机应用程序提供托管 .NET Compact Framework 组件。该过程包括以下任务:

  • 在考虑 COM 编程时设计托管类型。例如,不要使用泛型类型。

  • 定义希望在托管接口中公开的功能,并让托管对象实现该接口。推荐下面的用法:

    • 对托管接口使用 GUID、InterfaceType 和 ComVisible 属性。

    • 在托管对象上使用 ClassInterface(ClassInterfaceType.None) 属性。

  • 创建托管类型的本机定义。

  • 将托管对象作为 COM 接口传递给本机代码。然后可以使用该 COM 接口从本机代码中调用托管对象实现的托管函数。

.NET Compact Framework 差异

若要从本机代码中调用托管 .NET Compact Framework 函数,必须先使用运行库将一个托管接口或委托往下封送处理为本机代码。这意味着必须始终在托管代码(带有托管可执行文件)中开始着手才能向本机代码公开托管组件。

下列与本机代码的互操作性不受 .NET Compact Framework 支持:

  • 使用程序集注册工具(例如 Regasm.exe)以使 COM 客户端将托管组件用作 COM 类。

  • 从 COM 中激活托管类型。

  • 在本机代码中承载运行库。

  • 承载的 ActiveX 控件。.NET Compact Framework 不支持 AxHost 类,不能使用 Microsoft Visual Studio 2005 和设计器从 ActiveX 控件派生托管窗体。不过,假设 .Net Compact Framework 支持 COM Interop,则存在用于构建自己的 ActiveX 容器宿主的基础结构。

  • 初始化 COM 以使用单线程单元。

  • 自动生成类接口。必须在显式接口中包装要向本机代码公开的功能。

  • 自动生成 GUID。必须为每个接口分配一个显式 GUID 才能向本机代码公开它。

公开的托管组件的设计时属性

您可以提供用于向 COM 公开托管组件的设计时属性。.NET Compact Framework 支持 .NET Framework 全功能版中可用的属性的子集,这些属性包括:

请参见

其他资源

.NET Compact Framework 中的互操作性