Partager via


Application de l'attribut personnalisé pour remplacer l'identificateur de dispatch COM (DISPID) par défaut

Dans COM non managé, les interfaces de dispatch ont un membre par défaut (DISPID_VALUE ou 0), appelé si aucun DISPID n'a été spécifié. Le .NET Framework ne peut pas référencer une méthode ou propriété par défaut ; donc, vous pouvez utiliser cet attribut custom pour spécifier tout DISPID comme membre par défaut à l'importation. La syntaxe de cet attribut custom est la suivante :

GUID = CD2BC5C9-F452-4326-B714-F9C539D4DA58
Value = number indicating the default DISPID

Exemple

L'exemple suivant, écrit en langage IDL (Interface Definition language), affiche l'utilisation de l'attribut DISPID custom. Ce dernier spécifie, à l'importation, que le membre method1, avec un DISPID égal à 2, sera utilisé comme membre par défaut.

[
   object,
   uuid(5EA05866-2E49-421C-BE47-FF62C5B9504E),
   dual,
   helpstring("IMyClass Interface"),
   pointer_default(unique)
]
interface IMyClass : IDispatch
{
   // Use the default dispID.
   [custom(CD2BC5C9-F452-4326-B714-F9C539D4DA58, 0), id(2), helpstring("method method1")] HRESULT method1();
};
[
   uuid(186D98EE-6750-42B9-947D-B82CF4A94600),
   helpstring("MyClass Class")
]
coclass MyClass
{
   [default] interface IMyClass;
};

Après importation de la bibliothèque de types, le MSIL obtenu ressemble à ce qui suit :

.method public hidebysig newslot abstract virtual 
instance void  method1() runtime managed internalcall
{
.custom instance void [mscorlib]System.Runtime.InteropServices.DispIdAttribute::.ctor(int32) = ( 01 00 03 00 00 00 00 00 ) 
} // This is the end of method IMyClass::method1.

Voir aussi

Référence

TypeLibConverter

ITypeLibConverter

Tlbimp.exe (Type Library Importer)

Concepts

Application de l'attribut personnalisé pour implémenter IEnumerable

Application de l'attribut personnalisé aux propriétés COM get/set non managées de balises

Importation d'une bibliothèque de types sous la forme d'un assembly