Freigeben über


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

TypeLibConverter

ITypeLibConverter

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

Importieren einer Typbibliothek als Assembly