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