Compartilhar 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 e APIs de interoperabilidade COM durante o processo de conversão e aqueles aplicados por você ou pela interoperabilidade COM.

Se você não estiver familiarizado com a tarefa de aplicar atributos ao código gerenciado, consulte Estendendo metadados usando atributos. Assim 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 Design-Time

Você pode ajustar o resultado do processo de conversão executado pelas ferramentas e APIs de interoperabilidade COM por meio de atributos de tempo de projeto. A tabela a seguir descreve os atributos que você pode aplicar ao código-fonte gerenciado. As ferramentas de interoperabilidade COM, em algumas ocasiões, 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 gerada para uma classe.
CoClassAttribute Identifica o CLSID da coclass original importado de uma biblioteca de tipos.

Normalmente, as ferramentas de interoperabilidade COM aplicam esse atributo.
ComImportAttribute Indica que uma definição de coclasse 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 que o tipo seja exportado de volta para uma biblioteca de tipos.

Normalmente, as ferramentas de interoperabilidade COM aplicam esse atributo.
ComRegisterFunctionAttribute Indica que um método deve ser chamado quando o assembly é registrado para uso do 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 é desregistrado do COM, de modo que o código escrito pelo usuário possa ser executado enquanto o processo ocorre.
ComVisibleAttribute Renderiza tipos invisíveis para 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 públicos gerenciados 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. Esse atributo contém o DISPID para o método, campo ou propriedade que ele descreve.

As ferramentas de interoperabilidade COM podem aplicar esse atributo.
ComDefaultInterfaceAttribute Indica a interface padrão de 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 GUID (identificador global exclusivo) de uma classe, interface ou uma 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 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 atribuir parâmetros.
InterfaceTypeAttribute Controla como uma interface gerenciada é exposta a clientes COM (Dual, derivada de IUnknown ou somente IDispatch).

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 empacotados entre código gerenciado e não gerenciado. O atributo sempre é opcional, porque cada tipo de dados tem um comportamento de marshaling 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 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.

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 de Conversion-Tool

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 durante o desenvolvimento.

Atributo Descrição
ComAliasNameAttribute Indica o alias COM para um parâmetro ou tipo de campo. Pode ser usado para atribuir parâmetros, campos ou valores retornados.
ComConversionLossAttribute Indica que as informações sobre uma classe ou interface foram perdidas quando elas 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 a assemblagem foi originalmente importada de uma biblioteca de tipos COM. Esse 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.

Consulte também