Aplicar o atributo personalizado para substituir o identificador padrão despacho de COM (DISPID)

As interfaces de despacho do COM não gerenciado ter um membro padrão (DISPID_VALUE, ou 0) que é chamado na ausência de um DISPID especificado. A.NET Framework não pode fazer referência a um método padrão ou a propriedade; Assim, você pode usar esse personalizado atributo para especificar nenhum DISPID como o membro padrão após a importação. A sintaxe personalizado atributo é o seguinte:

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

Exemplo

O exemplo a seguir, escrito na linguagem de definição de Interface (IDL) mostra o uso da personalizado atributo DISPID para especificar, após a importação, que o membro method1, com um DISPID de 2, está a ser usado como o membro padrão.

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

O MSIL resultante após a importação de biblioteca de tipos seria semelhante à seguinte:

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

Consulte também

Referência

TypeLibConverter

ITypeLibConverter

Tlbimp. exe (importador da biblioteca)

Conceitos

Aplicar o atributo personalizado para implementar IEnumerable

Aplicar o atributo personalizado para obter COM não gerenciado do Tag/definir propriedades

A importação de uma biblioteca de tipos como um Assembly.