共用方式為


套用自訂屬性以標記 Unmanaged COM Get/Set 屬性

Unmanaged COM 介面可以是透過 Item 方法存取列舉型別的可列舉物件。 在 .NET Framework 中,這個方法會指定為 .Item。 存取這個方法的唯一適當方式是透過 IDL 檔中的屬性 (Attribute),將項目標記為 propget,但是這麼做會變更型別程式庫中函式的簽章 (Signature)。 您可以使用這個自訂屬性,在匯入時將方法標記為 propget。 這個自訂屬性的語法如下:

GUID = 2941ff83-88d8-4f73-b6a9-bdf8712d000d // for propget

此外,您可以使用另一個自訂屬性,在匯入時將方法標記為 propput。 這個自訂屬性的語法如下:

GUID = 29533527-3683-4364-abc0-db1add822fa2 // for propput

請注意,這個自訂屬性僅適用於方法。 此外,還有下列規則 (Rule):

  • 每次只能套用一個屬性,如果套用多個屬性,除了第一個之外,會忽略其他所有的屬性。

  • 對於 propget 而言,這個自訂屬性會忽略所有沒有傳回值的方法簽章。

  • 對於 propput 而言,這個自訂屬性會忽略所有沒有輸入參數 (參數可用 [in] 或 [out] 標記,但不可用 [out,retval]) 的方法簽章,也會忽略所有具傳回值的簽章。

  • 對於 propgetpropput 而言,如果這兩者和 id(-4) 或自訂 dispid(-4) 一起使用,那麼這個自訂屬性會忽略 GetEnumerator 方法。

  • 使用 Tlbimp.exe 匯入型別程式庫時,在將自訂屬性套用至分派介面 (分配介面 (Dispinterface)) 後,請永遠使用 /transform:dispret 參數。

範例

在以介面定義語言 (IDL) 撰寫的下列範例中,示範了 propget 屬性的使用方式:

[custom(2941ff83-88d8-4f73-b6a9-bdf8712d000d, ""), id(6)] 
HRESULT cget(int i, [out, retval] short *pVal);

下列範例顯示 propput 屬性的使用方式:

[custom(29533527-3683-4364-abc0-db1add822fa2, ""), id(7)] 
HRESULT cset([in] int i);

請參閱

參考

TypeLibConverter

ITypeLibConverter

Tlbimp.exe (型別程式庫匯入工具)

概念

套用自訂屬性以實作 IEnumerable

套用自訂屬性以覆寫預設 COM 分派識別項 (DISPID)

匯入型別程式庫做為組件