自訂封送處理

封送處理器實質上提供了新、舊介面功能之間的橋接。 自訂封送處理可以讓設計配合舊介面使用的用戶端,也能夠配合只實作新介面的伺服器使用。 自訂封送處理也能讓建置來配合新介面使用的用戶端,能夠配合公開舊介面的伺服器使用。

除了使用 Interop 封送處理器之外,您也可以對採用不同封送處理行為或以不同方式向元件物件模型 (COM) 公開介面的介面,設計自訂封送處理器。 藉由使用自訂封送處理器,您可以盡量縮小新的 .NET Framework 元件與現有 COM 元件之間的差異。

例如,假設您要開發一個稱為 INew 的 Managed 介面。 當這個介面透過標準 COM 可呼叫包裝函式向 COM 公開的時候,它擁有與 Managed 介面同樣的方法,並且使用內建於 Interop 封送處理器的封送處理規則。 現在,再假設有個稱為 IOld、眾所周知的 COM 介面,已經提供了與 INew 介面同樣的功能。 藉由採用自訂封送處理器,您可以提供 IOld 的 Unmanaged 實作,它僅僅是將呼叫委派給 INew 介面的 Managed 實作。 這個自訂封送處理器實質上就是 Managed 和 Unmanaged 介面之間的橋接。

請注意,在僅限分派的介面上進行從 Managed 端到 Unmanaged 端的呼叫時,並不會叫用自訂封送處理器。

相關主題

標題

說明

定義封送處理型別

描述如何準備設定自訂封送處理器的介面。

實作 ICustomMarshaler 介面

描述準備自訂封送處理器的選項。

使用替代封送處理器

描述如何使用 MarshalAsAttribute 屬性來插入自訂封送處理器。

Interop 封送處理

描述 COM Interop 和平台叫用的封送處理。

參考資料

System.Runtime.InteropServices.ICustomMarshaler

System.Runtime.InteropServices.MarshalAsAttribute