Compartilhar via


Aplicando atributos de interoperabilidade

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

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

Atributos em tempo de design

Ajuste o resultado do processo de conversão executado pelas APIs e pelas ferramentas de interoperabilidade COM usando atributos em tempo de design. A tabela a seguir descreve os atributos que podem ser aplicados ao código-fonte gerenciado. Às vezes, as ferramentas de interoperabilidade COM também podem aplicar os atributos descritos nesta tabela.

Atributo Descrição
AutomationProxyAttribute Especifica se o tipo deve ter o marshaling realizado usando o marshaler de Automação ou um stub e proxy personalizados.
ClassInterfaceAttribute Controla o tipo de interface gerado para uma classe.
CoClassAttribute Identifica o CLSID da coclass original importado de uma biblioteca de tipos.

As ferramentas de interoperabilidade COM geralmente aplicam esse atributo.
ComImportAttribute Indica que uma definição de coclass ou interface foi importada de uma biblioteca de tipos COM. O runtime usa esse sinalizador para saber como ativar e realizar marshaling do tipo. Esse atributo proíbe o tipo que está sendo exportado novamente para uma biblioteca de tipos.

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

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

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

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 GUID (identificador global exclusivo) de uma classe, uma interface ou toda uma biblioteca de tipos. A cadeia de caracteres passada para o atributo deve ter um formato que seja um argumento de construtor aceitável para o tipo System.Guid.

Ferramentas de interoperabilidade COM podem aplicar esse atributo.
IDispatchImplAttribute Indica qual implementação da interface IDispatch o Common Language Runtime usa ao expor interfaces duplas e dispinterfaces ao COM.
InAttribute Indica se os dados devem ter o marshaling realizado para o chamador. Pode ser usado para parâmetros de atributo.
InterfaceTypeAttribute Controla como uma interface gerenciada é exposta aos clientes COM (Dupla, derivada de IUnknown ou somente IDispatch).

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

Ferramentas de interoperabilidade COM podem aplicar esse atributo.
MarshalAsAttribute Indica como os dados em campos ou parâmetros devem ter o marshaling realizado entre o código gerenciado e não gerenciado. O atributo sempre é opcional, porque cada tipo de dados tem um comportamento de marshaling padrão.

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

Ferramentas de interoperabilidade COM podem aplicar esse atributo.
OutAttribute Indica se os dados em um campo ou parâmetro devem ter o marshaling realizado de um objeto chamado novamente para seu chamador.
PreserveSigAttribute Suprime a transformação de assinatura HRESULT ou retval que normalmente ocorre durante chamadas de interoperação. O atributo afeta o marshaling, bem como a exportação da biblioteca de tipos.

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

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. Esses atributos não são aplicados em tempo de design.

Atributo Descrição
ComAliasNameAttribute Indica o alias COM de um parâmetro ou tipo de campo. Pode ser usado para parâmetros de atributo, campos ou valores retornados.
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 do 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 o FUNCFLAGS que foi originalmente importado para essa função da biblioteca de tipos COM.
TypeLibTypeAttribute Contém o TYPEFLAGS que foi originalmente importado para esse tipo da biblioteca de tipos COM.
TypeLibVarAttribute Contém o VARFLAGS que foi originalmente importado para essa variável da biblioteca de tipos COM.

Confira também