Application de l'attribut personnalisé aux propriétés COM get/set non managées de balises
Les interfaces COM non managées peuvent être des objets énumérables accédant aux énumérations par une méthode Item. Dans le .NET Framework, cette méthode est spécifiée par .Item. La seule façon d'accéder correctement à cette méthode est de référencer l'élément dans le fichier IDL en tant que propget à l'aide d'attributs, mais elle modifie la signature de la fonction dans la bibliothèque de types. Vous pouvez utiliser cet attribut custom pour référencer la méthode comme propget à l'importation. La syntaxe de cet attribut custom est la suivante :
GUID = 2941ff83-88d8-4f73-b6a9-bdf8712d000d // for propget
En outre, vous pouvez utiliser un autre attribut custom pour référencer une méthode comme propput à l'importation. La syntaxe de cet attribut custom est la suivante :
GUID = 29533527-3683-4364-abc0-db1add822fa2 // for propput
Notez que cet attribut custom ne peut être appliqué que sur les méthodes. En outre, les règles suivantes s'appliquent :
Vous pouvez n'appliquer qu'un attribut à la fois ; si vous appliquez plusieurs attributs, tous sont ignorés, sauf le premier.
Pour propget, l'attribut custom ignore toutes les signatures de méthode sans valeur de retour.
Pour propput, l'attribut custom ignore toutes les signatures de méthode sans paramètres d'entrée (les paramètres peuvent être marqués avec [in] ou [out] mais pas avec [out,retval]) et il ignore également toutes les signatures avec valeur de retour.
Pour propget et propput, l'attribut custom ignore la méthode GetEnumerator s'ils sont utilisés avec un id(-4) ou un dispid(-4) personnalisé.
Lorsque vous importez la bibliothèque de types à l'aide de Tlbimp.exe, utilisez toujours le commutateur /transform:dispret après avoir appliqué l'attribut custom aux dispinterfaces (interfaces à dispatch seul).
Exemple
L'exemple suivant, écrit en langage IDL (Interface Definition language), affiche l'utilisation de l'attribut propget :
[custom(2941ff83-88d8-4f73-b6a9-bdf8712d000d, ""), id(6)]
HRESULT cget(int i, [out, retval] short *pVal);
L'exemple suivant illustre l'utilisation de l'attribut propput :
[custom(29533527-3683-4364-abc0-db1add822fa2, ""), id(7)]
HRESULT cset([in] int i);
Voir aussi
Référence
Tlbimp.exe (Type Library Importer)
Concepts
Application de l'attribut personnalisé pour implémenter IEnumerable
Importation d'une bibliothèque de types sous la forme d'un assembly