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