共用方式為


模擬 COM 介面

更新:2007 年 11 月

COM 可呼叫包裝函式 (CCW) 會使用與 COM 已執行的介面架構互動一致的方式,向 COM 用戶端公開所有公用 (Public)、COM 可視介面、資料型別和傳回值。對於 COM 用戶端而言,叫用 .NET Framework 物件上的方法和叫用 COM 物件上的方法是一樣的。

為了建立這種緊密整合的方式,CCW 會製作傳統的 COM 介面,例如 IUnknownIDispatch。如下圖所示,CCW 會維持對它所包裝之 .NET 物件的單一參考。COM 用戶端和 .NET 物件兩者都是透過 CCW 的 Proxy 和 Stub 建構彼此互動。

Com 介面和 COM 可呼叫包裝函式

COM 介面

除了公開由 Managed 環境中類別所明確實作的介面外,.NET Framework 還提供下表中所列代表這個物件的 COM 介面實作 (Implementation)。.NET 類別可以藉由提供它自己對這些介面的實作,來覆寫預設的行為。不過,執行階段永遠會提供 IUnknownIDispatch 介面的實作。

介面

說明

Idispatch

提供晚期繫結至型別的機制。

IerrorInfo

提供錯誤的文字描述、它的來源、說明檔、說明內容,以及定義這項錯誤的介面 GUID (對 .NET 類別一定是 GUID_NULL)。

IprovideClassInfo

讓 COM 用戶端能夠存取由 Managed 類別所實作的 ITypeInfo 介面。

IsupportErrorInfo

讓 COM 用戶端能夠判斷 Managed 物件是否支援 IErrorInfo 介面。如果可以支援,讓用戶端取得最新例外狀況物件的指標。所有 Managed 型別都支援 IErrorInfo 介面。

ItypeInfo

提供與 Tlbexp.exe 所產生之型別資訊完全相同的類別型別資訊。

Iunknown

提供 COM 用戶端用來管理 CCW 的存留期並且提供型別強制的 IUnknown 介面標準實作。

Managed 類別也可以提供下表中所描述的 COM 介面。

介面

說明

(_classname) 類別介面

由 Runtime 所公開且未明確定義的介面,它會公開所有在 Managed 物件上明確公開的公用介面、方法、屬性和欄位。

IConnectionPointIConnectionPointContainer

以委派架構事件為來源的物件介面 (註冊事件訂閱者的介面)。

IdispatchEx

如果類別實作 IExpando,則由 Runtime 提供的介面。IDispatchEx 介面是 IDispatch 介面的擴充,和 IDispatch 的不同點在於,它啟用成員的列舉型別 (Enumeration)、加入、刪除和區分大小寫呼叫。

IEnumVARIANT

集合型別類別的介面,如果類別實作 IEnumerable,它會列舉集合中的物件。

請參閱

概念

COM 可呼叫包裝函式

類別介面簡介

將 .NET Framework 元件公開給 COM