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

Interfaces de COM não gerenciados podem ser objetos de enumerable que acessam as enumerações através de um Item método. No.NET Framework, esse método é especificado como .Item. A única maneira de acessar esse método corretamente é a marca do item como propget por meio de atributos IDL arquivo, mas isso alteraria a assinatura da função na biblioteca de tipos. Você pode usar esse personalizado atributo para marcar o método como propget após a importação. A sintaxe do personalizado atributo é o seguinte:

GUID = 2941ff83-88d8-4f73-b6a9-bdf8712d000d // for propget

Além disso, você pode usar outro personalizado atributo para marcar um método como propput após a importação. A sintaxe personalizado atributo é o seguinte:

GUID = 29533527-3683-4364-abc0-db1add822fa2 // for propput

Observe que esse personalizado atributo pode ser aplicado apenas nos métodos. Além disso, as seguintes regras se aplicam:

  • Você pode aplicar o atributo de somente um por vez; Se você aplicar vários atributos, todas, exceto a primeira é ignorado.

  • Para propget, o personalizado atributo ignora todas as assinaturas de método sem um valor de retorno.

  • Para propput, o personalizado atributo ignora todas as assinaturas de método sem parâmetros de entrada (parâmetros podem ser marcados com [in] ou [out], mas não with[out,retval]) e ele também ignora todas as assinaturas com um valor de retorno.

  • Para ambos propget e propput, o personalizado atributo ignora o GetEnumerator método se eles são usados em conjunto com um id(-4) ou dispid(-4) personalizado.

  • Ao importar a biblioteca de tipos usando Tlbimp. exe, use sempre a opção de /transform:dispret depois de aplicar o personalizado de atributo para despacho somente interfaces (dispinterfaces).

Exemplo

O exemplo a seguir, escrito na linguagem de definição de Interface (IDL) mostra o uso da propget atributo:

[custom(2941ff83-88d8-4f73-b6a9-bdf8712d000d, ""), id(6)] 
HRESULT cget(int i, [out, retval] short *pVal);

O exemplo a seguir mostra o uso de propput atributo:

[custom(29533527-3683-4364-abc0-db1add822fa2, ""), id(7)] 
HRESULT cset([in] int i);

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 substituir o identificador padrão despacho de COM (DISPID)

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