Partilhar via


Aplicando atributos de interoperabilidade

O System.Runtime.InteropServices namespace fornece três categorias de atributos específicos de interoperabilidade: aqueles aplicados por você em tempo de design, aqueles aplicados por ferramentas de interoperabilidade COM e APIs durante o processo de conversão e aqueles aplicados por você ou interoperabilidade COM.

Se você não estiver familiarizado com a tarefa de aplicar atributos ao código gerenciado, consulte Estendendo metadados usando atributos. Como outros atributos personalizados, você pode aplicar atributos específicos de interoperabilidade a tipos, métodos, propriedades, parâmetros, campos e outros membros.

Atributos de tempo de design

Você pode ajustar o resultado do processo de conversão executado por ferramentas de interoperabilidade COM e APIs usando atributos de tempo de design. A tabela a seguir descreve os atributos que você pode aplicar ao código-fonte gerenciado. As ferramentas de interoperabilidade COM, ocasionalmente, também podem aplicar os atributos descritos nesta tabela.

Atributo Description
AutomationProxyAttribute Especifica se o tipo deve ser empacotado usando o marshaller de automação ou um proxy e stub personalizados.
ClassInterfaceAttribute Controla o tipo de interface gerada para uma classe.
CoClassAttribute Identifica o CLSID da coclasse original importada de uma biblioteca de tipos.

As ferramentas de interoperabilidade COM normalmente aplicam esse atributo.
ComImportAttribute Indica que uma definição de coclasse ou interface foi importada de uma biblioteca de tipos COM. O tempo de execução usa esse sinalizador para saber como ativar e organizar o tipo. Este atributo proíbe que o tipo seja exportado de volta para uma biblioteca de tipos.

As ferramentas de interoperabilidade COM normalmente aplicam esse atributo.
ComRegisterFunctionAttribute Indica que um método deve ser chamado quando o assembly é registrado para uso a partir de COM, para que o código escrito pelo usuário possa ser executado durante o processo de registro.
ComSourceInterfacesAttribute Identifica interfaces que são fontes de eventos para a classe.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
ComUnregisterFunctionAttribute Indica que um método deve ser chamado quando o assembly não é registrado do COM, para que o código escrito pelo usuário possa ser executado durante o processo.
ComVisibleAttribute Torna os tipos invisíveis para COM quando o valor do atributo é igual a false. Este atributo pode ser aplicado a um tipo individual ou a um conjunto inteiro para controlar a visibilidade COM. Por padrão, todos os tipos públicos gerenciados são visíveis; o atributo não é necessário para torná-los visíveis.
DispIdAttribute Especifica o identificador de despacho COM (DISPID) de um método ou campo. Este atributo contém o DISPID para o método, campo ou propriedade que descreve.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
ComDefaultInterfaceAttribute Indica a interface padrão para uma classe COM implementada no .NET.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
FieldOffsetAttribute Indica a posição física de cada campo dentro de uma classe quando usado com o StructLayoutAttribute, e o LayoutKind é definido como Explicit.
GuidAttribute Especifica o identificador global exclusivo (GUID) de uma classe, interface ou biblioteca de tipos inteira. A cadeia de caracteres passada para o atributo deve ser um formato que seja um argumento de construtor aceitável para o tipo System.Guid.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
IDispatchImplAttribute Indica qual implementação de interface IDispatch o Common Language Runtime usa ao expor interfaces duplas e dispinterfaces para COM.
InAttribute Indica que os dados devem ser empacotados para o chamador. Pode ser usado para atribuir parâmetros.
InterfaceTypeAttribute Controla como uma interface gerenciada é exposta a clientes COM (Dual, IUnknown-derived, ou IDispatch somente).

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
LCIDConversionAttribute Indica que uma assinatura de método não gerenciado espera um parâmetro LCID.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
MarshalAsAttribute Indica como os dados em campos ou parâmetros devem ser agrupados entre código gerenciado e não gerenciado. O atributo é sempre opcional porque cada tipo de dados tem comportamento de empacotamento padrão.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
OptionalAttribute Indica que um parâmetro é opcional.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
OutAttribute Indica que os dados em um campo ou parâmetro devem ser empacotados de um objeto chamado de volta ao seu chamador.
PreserveSigAttribute Suprime a transformação de assinatura HRESULT ou retval que normalmente ocorre durante chamadas de interoperação. O atributo afeta o empacotamento, bem como a exportação da biblioteca de tipos.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
ProgIdAttribute Especifica o ProgID de uma classe .NET. Pode ser usado para atribuir classes.
StructLayoutAttribute Controla o layout físico dos campos de uma classe.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.

Atributos da ferramenta de conversão

A tabela a seguir descreve os atributos que as ferramentas de interoperabilidade COM aplicam durante o processo de conversão. Você não aplica esses atributos em tempo de design.

Atributo Description
ComAliasNameAttribute Indica o alias COM para um parâmetro ou tipo de campo. Pode ser usado para atribuir parâmetros, campos ou valores de retorno.
ComConversionLossAttribute Indica que as informações sobre uma classe ou interface foram perdidas quando foram importadas de uma biblioteca de tipos para um assembly.
ComEventInterfaceAttribute Identifica a interface de origem e a classe que implementa os métodos da interface de evento.
ImportedFromTypeLibAttribute Indica que o assembly foi originalmente importado de uma biblioteca de tipos COM. Este atributo contém a definição de biblioteca de tipos da biblioteca de tipos original.
TypeLibFuncAttribute Contém os FUNCFLAGS que foram originalmente importados para esta função da biblioteca de tipos COM.
TypeLibTypeAttribute Contém os TYPEFLAGS que foram originalmente importados para este tipo da biblioteca de tipos COM.
TypeLibVarAttribute Contém os VARFLAGS que foram originalmente importados para esta variável da biblioteca de tipos COM.

Consulte também