將 COM 公開至 .NET Compact Framework 元件

更新:2007 年 11 月

從 .NET Compact Framework 2.0 版開始,您可以從 Managed 程式碼呼叫 COM 物件。您也可以用完整 .NET Framework 提供的型別程式庫匯入工具 (TlbImp.exe) 匯入型別程式庫,或是在 Visual Studio 中,可將型別程式庫參考加入專案中。由於匯入的型別程式庫包含中繼資料中所描述的 COM 型別定義,所以又稱為 Interop 組件。

如果原本在 Managed 程式碼中配置的機器碼之記憶體,在原生函式呼叫傳回後仍然是由機器碼程式庫儲存,則 Managed 程式碼中的原生程式庫物件必須被 Pin 住,如此記憶體回收行程才不會移動或回收此物件。您可以使用 GCHandle 結構來 Pin 住物件。

Managed 程式碼必須負責根據適當的位元組界限對齊資料型別,也就是已知針對原生作業系統所指定之封裝處理序 (Packing Process)。

從 .NET Compact Framework 呼叫 COM 物件牽涉到三項工作:

  1. 建立 COM 介面和型別的 Managed 定義。

  2. 從專案參考這些定義。

  3. 將 COM 介面和型別當作 Managed 型別使用。

您也可以「親手撰寫」Managed 定義。

參考 Interop 組件

Interop 組件是含有 COM 型別定義的匯入型別程式庫,在型別程式庫匯入工具或 Visual Studio 產生的中繼資料會描述這些定義。

若要在建置專案時參考 Interop 組件,請對命令列編譯器使用 /r: 參數。在 Visual Studio 中對型別程式庫加入參考時,便會為您自動做到這點。

將 COM 型別當作 Managed 型別使用

預設介面的成員會在匯入時加入類別中。對於 IDispatchIUnknown 呼叫、QueryInterface,以及 COM 參考計數 (Reference Counting),都會自動處理。失敗的 HRESULT 值會自動對應至例外狀況。

如下所示,在匯入 COM 型別之後,您可以使用該型別做為程式設計工作中的其他任何 Managed 型別:

  • 以 new 關鍵字 (Visual Basic 中的 New) 建立執行個體

  • 攔截例外狀況

  • 直接透過類別呼叫

  • 避免在 IDispatchIUnknown 樣式呼叫之間選擇

  • 視需要轉換成特定介面

請參閱

其他資源

.NET Compact Framework 中的互通性