Condividi tramite


Applicazione dell'attributo personalizzato per sovrascrivere il DISPID COM predefinito

Le interfacce dispatch in COM non gestito dispongono di un membro predefinito (DISPID_VALUE o 0) che viene chiamato se non è specificato alcun DISPID. In .NET Framework non è possibile fare riferimento a un metodo a una proprietà predefinita. Occorre pertanto utilizzare questo attributo custom per specificare qualsiasi DISPID come membro predefinito durante l'importazione. La sintassi di tale attributo custom è la seguente:

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

Esempio

Nell'esempio riportato di seguito, scritto nel linguaggio IDL (Interface Definition Language), viene illustrato l'utilizzo dell'attributo custom DISPID per specificare il membro method1, con un DISPID di 2, come membro predefinito durante l'importazione.

[
   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;
};

Il codice MSIL generato al termine dell'importazione della libreria dei tipi risulterà simile al seguente:

.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.

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 rendere con tag le proprietà COM get/set non gestite

Importazione di una libreria dei tipi come assembly