在 Managed 程式碼中使用 COM 型別

在組件中定義的 COM 型別就像任何其他 Managed 型別一樣。 Managed 用戶端可以按照一般的方式建立 COM 型別的新執行個體,並且透過中繼資料取得類別資訊,就像對其他 Managed 類別一樣。 方法的語法可以透過物件檢視器來檢查或者使用反映取得,和任何其他 Managed 類別沒有什麼不同。 當 COM 物件傳回失敗的 HRESULT 時,.NET Framework 用戶端就會補捉對應的例外狀況。

您的應用程式有兩種方式可以包含啟用與 COM 型別交互操作的型別資訊:

  • 使用內嵌 Interop 型別:以 .NET Framework 4 版開始,您可以指示編譯器將 Interop 組件的型別資訊內嵌至可執行檔中。 編譯器只會內嵌應用程式使用的型別資訊。 您不一定要隨應用程式一起部署 Interop 組件。 這是建議使用的技巧。

  • 部署 Interop 組件:您可以建立 Interop 組件的標準參考。 在這種情況下,Interop 組件必須隨您的應用程式一起部署。 如果您使用此方法,而且並未使用私密 COM 元件,請務必參考要併入 Managed 程式碼之 COM 元件作者所發行的主要 Interop 組件 (PIA)。 如需產生和使用主要 Interop 組件的詳細資訊,請參閱主要 Interop 組件

注意事項注意事項

當使用內嵌 Interop 型別時,您可以內嵌來自 COM 元件作者所發行的主要 Interop 組件的型別。然而,您不一定要隨應用程式一起部署主要 Interop 組件。

使用內嵌 Interop 型別會減少應用程式的大小,因為大部分應用程式都沒有使用 COM 元件的所有功能。 編譯器在內嵌型別資訊時非常有效,如果應用程式只使用 COM 介面的部分方法,則編譯器不會內嵌未使用的方法。 當具有內嵌型別資訊的應用程式與其他此類應用程式互動,或與使用主要 Interop 組件的應用程式互動時,Common Language Runtime 會使用型別相同規則來判斷兩個型別是否使用相同的名稱表示相同的 COM 型別。

取得和釋放執行中 COM 物件的參考,就如同取得和釋放任何其他執行中 Managed 物件的參考一樣。 當 .NET Framework 用戶端取得和釋放 COM 物件的參考時,Runtime 會維持這個 COM 物件上的參考計數,就如同任何其他 COM 用戶端所執行的一樣,而且 .NET Framework 用戶端可以表現的就像是物件要進行記憶體回收一樣,就如同它們對任何其他 Managed 伺服器物件所執行的一樣。

Visual Studio 可更輕鬆地將型別資訊內嵌至應用程式或增益集中。 如需範例,請參閱逐步解說:從 Microsoft Office 組件內嵌型別資訊 (C# 和 Visual Basic)逐步解說:從 Managed 組件內嵌型別 (C# 和 Visual Basic)

如需這個章節主題中所附的程式碼範例,請參閱 COM Interop 範例:.NET 用戶端和 COM 伺服器

型別等價的規則在型別等價和內嵌 Interop 型別中有詳細討論。 然而,您不需要了解這些規則即可使用 COM 物件。

請參閱

工作

逐步解說:從 Managed 組件內嵌型別 (C# 和 Visual Basic)

概念

將 COM 元件公開給 .NET Framework

檢查 COM 型別的組件

啟動 COM 物件

呼叫方法、屬性和事件

互通的設計考量

COM 包裝函式

其他資源

逐步解說:從 Microsoft Office 組件內嵌型別資訊 (C# 和 Visual Basic)