Anwenden des custom-Attributs zum Überschreiben des standardmäßigen COM-Dispatchbezeichners (DISPID)
Dispatchschnittstellen in nicht verwaltetem COM weisen einen Standardmember (DISPID_VALUE oder 0) auf, der aufgerufen wird, wenn keine DISPID angegeben ist. .NET Framework kann nicht auf eine Standardmethode oder -eigenschaft verweisen. Verwenden Sie daher nach dem Importieren dieses custom-Attribut, um eine beliebige DISPID als Standardmember anzugeben. Die Syntax dieses custom-Attributs sieht folgendermaßen aus:
GUID = CD2BC5C9-F452-4326-B714-F9C539D4DA58
Value = number indicating the default DISPID
Beispiel
Das folgende in IDL (Interface Definition Language) geschriebene Beispiel verdeutlicht, wie mithilfe des custom-DISPID-Attributs nach dem Importieren angegeben werden kann, dass der Member method1, der die DISPID 2 aufweist, als Standardmember verwendet werden soll.
[
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;
};
Die sich nach dem Importieren der Typbibliothek ergebende MSIL würde ungefähr wie folgt aussehen:
.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.
Siehe auch
Referenz
Tlbimp.exe (Type Library Importer-Tool)
Konzepte
Anwenden des custom-Attributs zum Implementieren von IEnumerable
Anwenden des custom-Attributs zum Markieren von Get-/Set-Eigenschaften für nicht verwaltetes COM