套用 Interop 屬性
System.Runtime.InteropServices 命名空間提供了三種類別的 Interop 相關屬性:一種是您在設計階段套用的屬性、一種是 COM Interop 工具和 API 在轉換過程中套用的屬性,還有一種是您或 COM Interop 套用的屬性。
如果您不熟悉將屬性套用至 Managed 程式碼的工作,請參閱使用屬性擴充中繼資料。就像其他自訂屬性一樣,您可以將 Interop 專屬屬性 (Attribute) 套用至型別、方法、屬性 (Property)、參數、欄位和其他成員。
設計階段屬性
您可以使用設計階段屬性來調整 COM Interop 工具和 API 所執行的轉換處理結果。下表所述是您能夠套用至 Managed 原始程式碼的屬性。COM Interop 工具偶爾也會套用下表所述的屬性。
屬性 | 說明 |
---|---|
指定型別是否要使用 Automation 封送處理器或自訂的 Proxy 和 Stub 來封送處理。 |
|
控制對類別所產生之介面的型別。 |
|
辨識從型別程式庫匯入原始 Coclass 的 CLSID。 COM Interop 工具通常都會套用這個屬性。 |
|
表示已從 COM 型別程式庫匯入 Coclass 或介面定義。Runtime 會使用這個旗標來瞭解如何啟動和封送處理該型別。這個屬性禁止將型別重新匯回型別程式庫中。 COM Interop 工具通常都會套用這個屬性。 |
|
指示當組件已註冊為從 COM 使用時應該呼叫某個方法,讓使用者撰寫的程式碼能夠在註冊處理時被執行。 |
|
識別類別之事件來源的介面。 COM Interop 工具可以套用這個屬性。 |
|
指示當組件從 COM 移除註冊時應該呼叫某個方法,讓使用者撰寫的程式碼能夠在這項處理時被執行。 |
|
當屬性值等於 false 時,將型別轉譯為讓 COM 看不見。這個屬性可以套用至個別型別或套用至整個組件以控制 COM 的可視性。根據預設,所有 Managed 公用型別都是可見的;不需要這個屬性來讓它們成為可見。 |
|
指定方法或欄位的 COM 分派識別項 (Dispatch Identifier,DISPID)。這個屬性 (Attribute) 含有它所描述之方法、欄位或屬性 (Property) 的 DISPID。 COM Interop 工具可以套用這個屬性。 |
|
當配合 StructLayoutAttribute 使用且 LayoutKind 設定為 Explicit 時,指示每一欄位在類別中的實際位置。 |
|
指定類別、介面或整個型別程式庫的全域唯一識別項 (GUID)。傳遞給屬性 (Attribute) 的字串必須是型別 System.Guid 可接受建構函式 (Constructor) 引數的格式。 COM Interop 工具可以套用這個屬性。 |
|
指示在公開雙重介面 (Dual Interface) 和分配介面 (Dispinterface) 給 COM 時,Common Language Runtime 所要使用的 IDispatch 介面實作。 |
|
指示資料應封送處理進入呼叫端。可用於屬性參數。 |
|
控制 Managed 介面如何公開給 COM 用戶端 (僅適用於 Dual、IUnknown 所衍生或 IDispatch)。 COM Interop 工具可以套用這個屬性。 |
|
指示 Unmanaged 方法簽章需要 LCID 參數。 COM Interop 工具可以套用這個屬性。 |
|
指示欄位或參數中的資料在 Managed 和 Unmanaged 程式碼之間應如何封送處理。這個屬性必定是選擇性的,因為每種資料型別都有預設的封送處理行為。 COM Interop 工具可以套用這個屬性。 |
|
指示參數為選擇性的。 COM Interop 工具可以套用這個屬性。 |
|
指示欄位或參數中的資料必須從被呼叫的物件封送處理回其呼叫端。 |
|
抑制通常發生於互通呼叫的 HRESULT 或 Retval 簽章轉換。這個屬性會影響封送處理以及型別程式庫匯出。 COM Interop 工具可以套用這個屬性。 |
|
指定 .NET Framework 類別的 ProgID。可使用於屬性類別。 |
|
控制類別欄位的實體配置。 COM Interop 工具可以套用這個屬性。 |
轉換工具屬性
下表所述是 COM Interop 工具在轉換處理時套用的屬性。您不能在設計階段套用這些屬性。
屬性 | 說明 |
---|---|
指示參數或欄位型別的 COM 別名 (Alias)。可使用於屬性參數、欄位或傳回值。 |
|
指示類別或介面的相關資訊從型別程式庫匯入組件時遺失。 |
|
辨識實作事件介面方法的來源介面和類別。 |
|
指示這個組件原來是從 COM 型別程式庫所匯入的。這個屬性含有原來型別程式庫的型別程式庫定義。 |
|
含有原來針對這個函式從 COM 型別程式庫匯入的 FUNCFLAGS。 |
|
含有原來針對這個型別從 COM 型別程式庫匯入的 TYPEFLAGS。 |
|
含有原來針對這個變數從 COM 型別程式庫匯入的 VARFLAGS。 |
請參閱
參考
System.Runtime.InteropServices
概念
將 .NET Framework 元件公開給 COM
限定互通的 .NET 型別
封裝 COM 的組件