Applicazione dell'attributo personalizzato per rendere con tag le proprietà COM get/set

Le interfacce COM non gestite possono essere costituite da oggetti enumerabili che accedono alle enumerazioni tramite un metodo Item. In .NET Framework, questo metodo è specificato come .Item. Il solo modo per accedere in maniera corretta a questo metodo è applicare all'elemento il tag propget negli attributi contenuti nel file IDL, ma tale operazione provocherebbe la modifica della firma della funzione nella libreria dei tipi. È possibile utilizzare l'attributo custom per applicare al metodo il tag propget al momento dell'importazione. La sintassi dell'attributo custom è la seguente:

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

È inoltre possibile utilizzare un altro attributo custom per applicare a un metodo il tag propput al momento dell'importazione. La sintassi di tale attributo custom è la seguente:

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

Si noti che questo attributo custom può essere applicato solo ai metodi. È inoltre necessario rispettare le seguenti regole:

  • È possibile applicare un solo attributo alla volta. Se vengono applicati più attributi, verrà considerato solo il primo.

  • Per propget, l'attributo custom ignora tutte le firme del metodo senza un valore restituito.

  • Per propput, l'attributo custom ignora tutte le firme del metodo senza parametri di input (i parametri possono essere contrassegnati con [in] o [out], ma non con [out,retval]) e le firme senza un valore restituito.

  • Se propget e propput vengono utilizzati con un id(-4) o un dispid(-4) personalizzato, l'attributo custom ignora il metodo GetEnumerator.

  • Durante l'importazione della libreria dei tipi mediante Tlbimp.exe, utilizzare sempre l'opzione /transform:dispret dopo aver applicato l'attributo custom alle interfacce solo dispatch (dispinterface).

Esempio

Nell'esempio riportato di seguito, scritto nel linguaggio IDL (Interface Definition Language), viene illustrato l'utilizzo dell'attributo propget:

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

Nell'esempio riportato di seguito viene illustrato l'utilizzo dell'attributo propput:

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

Vedere anche

Riferimenti

TypeLibConverter

ITypeLibConverter

Tlbimp.exe (utilità di importazione della libreria dei tipi)

Concetti

Applicazione dell'attributo personalizzato per implementare IEnumerable

Applicazione dell'attributo personalizzato per sovrascrivere il DISPID COM predefinito

Importazione di una libreria dei tipi come assembly