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