將 .NET Compact Framework 元件公開至 COM

更新:2007 年 11 月

您可以將 .NET Compact Framework 元件公開 (Expose) 給機器碼,但是若與完整的 .NET Framework 相較,在互通性 (Interoperability) 上仍有差異。

公開 Managed 元件

您可以對原生應用程式提供 Managed .NET Compact Framework 元件。本程序包含下列工作:

  • 在設計 Managed 型別時請考量 COM 程式設計。例如,不要使用泛型型別。

  • 定義想要在 Managed 介面中公開的功能,並使用您的 Managed 物件實作此介面。建議項目如下:

    • 在 Managed 介面中使用 GUID、InterfaceType 和 ComVisible 等屬性 (Attribute)。

    • 在 Managed 物件上使用 ClassInterface(ClassInterfaceType.None) 屬性。

  • 為 Managed 型別建立原生定義。

  • 將 Managed 物件當做 COM 介面傳送到機器碼。接著,您可以從原生應用程式中藉由 COM 介面呼叫於 Managed 物件內實作的 Managed 方法。

.NET Compact Framework 差異

若要從機器碼呼叫 Managed .NET Compact Framework 函式,必須先使用執行階段封送處理 Managed 介面或委派給機器碼。這表示您一定要從 Managed 程式碼 (具有 Managed 可執行檔) 開始作業,才能將 Managed 元件公開給機器碼。

下列與機器碼的互通性不受 .NET Compact Framework 的支援:

  • 使用組件註冊工具 (例如 Regasm.exe),使 COM 用戶端能使用 Managed 元件當做 COM 類別。

  • 從 COM 啟動 Managed 型別。

  • 從機器碼裝載執行階段。

  • 裝載 ActiveX 控制項。.NET Compact Framework 不支援 AxHost 類別,您不能使用 Microsoft Visual Studio 2005 和設計工具將 ActiveX 控制項置入 Managed 表單。不過,由於 .Net Compact Framework 支援 COM interop,所以有基礎結構可以建置您本身的 ActiveX 容器載體。

  • 初始化 COM 以使用單一執行緒 Apartment。

  • 自動產生類別介面。您必須把要公開給機器碼的功能包裝在明確的介面中。

  • 自動產生 GUID。您必須為每個介面提供明確的 GUID,才能將其公開給機器碼。

公開 Managed 元件的設計階段屬性

您可以提供設計階段屬性,用來公開 Managed 元件至 COM。.NET Compact Framework 支援完整 .NET Framework 中可用屬性的子集,其中包括下列:

請參閱

其他資源

.NET Compact Framework 中的互通性