Lar Desenvolvimento O que são atributos direcionais em c? - o que é techopedia

O que são atributos direcionais em c? - o que é techopedia

Índice:

Anonim

Definição - O que significam Atributos direcionais?

Atributos direcionais, em C #, são tags usados ​​para especificar parâmetros do método de objeto com informações relacionadas ao fluxo direcional de dados entre o chamador e o chamado.


Atributos direcionais controlam o empacotamento - onde um objeto é preparado para transferência através de um aplicativo ou processo - da direção do parâmetro do método e dos valores de retorno. Atributos direcionais são aplicados para modificar a empacotamento do tempo de execução durante a comunicação do código gerenciado, que é executado pelo Common Language Runtime (CLR) e do código não gerenciado, que é executado fora do controle do CLR.

Techopedia explica atributos direcionais

InAttribute e OutAttribute são os dois atributos direcionais de C # usados ​​para mapear para os atributos de IDL (Interface Definition Language) do Component Object Model (COM). InAttribute mapeia para e OutAttribute mapeia para. O valor de retorno da assinatura do método gerenciado é mapeado para em uma biblioteca de tipos. É essencial especificar o atributo direcional correto para os parâmetros do método, para que a biblioteca de tipos de exportação defina corretamente os bits de entrada / saída.


Ao aplicar InAttribute e OutAttribute em matrizes e tipos não-blittáveis ​​formatados (que não possuem representação de memória gerenciada e não gerenciada comum), o chamador vê alterações nos chamados. Atributos direcionais aplicados a esses tipos reduzem cópias desnecessárias durante o empacotamento.


Em C #, InAttribute e OutAttribute são usados ​​em três formulários com duas palavras-chave durante a comunicação de chamador e receptor, da seguinte maneira:

  • "fora" - implica
  • "ref" - implica,
  • (Nenhum especificado) - (por padrão)

As palavras-chave out e ref são usadas para tipos de valor e tipos de referência serializáveis. A palavra-chave ref implica que o parâmetro seja empacotado em ambas as direções e out implica transferência de dados chamados. Quando ref ou out não são usados, isso implica que os dados são transferidos para o chamado.


Por exemplo, um aplicativo cliente .NET envia um valor de entrada para um método de componente COM, que calcula o resultado do valor de entrada e retorna o resultado ao cliente. Atributos direcionais podem ser aplicados aos parâmetros do método que atende à solicitação, indicando o tipo de empacotamento necessário para o valor de entrada e o resultado.


Atributos direcionais têm as seguintes características:

  • Opcional e aplicado aos parâmetros do método em tempo de design
  • Suportado apenas para interoperabilidade e chamada de plataforma COM
  • InAttribute não pode ser aplicado a um parâmetro com uma palavra-chave out

O empacotador de interoperabilidade CLR fornece serviço de empacotamento em tempo de execução, manipulando argumentos de chamada de método e retornando valores entre a memória gerenciada e a não gerenciada. Se os atributos direcionais não estiverem definidos, o empacotador determinará o fluxo direcional com base no tipo de parâmetro e no modificador (se houver). O empacotador opera da seguinte maneira:

  • Ele não substitui os dados passados ​​como um parâmetro "In" do código não gerenciado. Portanto, somente dados somente leitura, como dados acessados ​​simultaneamente, podem ser transmitidos.
  • Ao passar objetos - como cadeias básicas ou binárias (BSTR) - com alocação de memória estabelecida, a sequência adequada de alocação / desalocação é seguida de acordo com as configurações de Entrada / Saída.
Esta definição foi escrita no contexto de C #
O que são atributos direcionais em c? - o que é techopedia