向 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 全功能版中可用的属性的子集,这些属性包括: