Compartilhar via


Classe InAttribute

 

Dica

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Indica que os dados devem passar por marshaling pelo chamador para o receptor, mas não de volta para o chamador.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Hierarquia de Herança

System.Object
  System.Attribute
    System.Runtime.InteropServices.InAttribute

Sintaxe

[AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class InAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Parameter, Inherited = false)]
[ComVisibleAttribute(true)]
public ref class InAttribute sealed : Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = false)>]
[<ComVisibleAttribute(true)>]
type InAttribute = 
    class
        inherit Attribute
    end
<AttributeUsageAttribute(AttributeTargets.Parameter, Inherited := False)>
<ComVisibleAttribute(True)>
Public NotInheritable Class InAttribute
    Inherits Attribute

Construtores

Nome Descrição
System_CAPS_pubmethod InAttribute()

Inicializa uma nova instância da classe InAttribute.

Propriedades

Nome Descrição
System_CAPS_pubproperty TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.(Herdado de Attribute.)

Métodos

Nome Descrição
System_CAPS_pubmethod Equals(Object)

Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Retorna um valor que indica se essa instância é igual a um objeto especificado.(Herdado de Attribute.)

System_CAPS_pubmethod GetHashCode()

Retorna o código hash para essa instância.(Herdado de Attribute.)

System_CAPS_pubmethod GetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethod IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.(Herdado de Attribute.)

System_CAPS_pubmethod Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.(Herdado de Attribute.)

System_CAPS_pubmethod ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.)

Implementações Explícitas da Interface

Nome Descrição
System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição.(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface.(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.GetTypeInfoCount(UInt32)

Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1).(Herdado de Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornece acesso a propriedades e métodos expostos por um objeto.(Herdado de Attribute.)

Comentários

Você pode aplicar esse atributo para parâmetros.

O InAttribute é opcional. Há suporte para interoperabilidade COM o atributo e apenas a invocação de plataforma. Na ausência de configurações explícitas, interop marshaler pressupõe que as regras com base no parâmetro de tipo, se o parâmetro é passado por referência ou por valor e se o tipo é blittable ou não blittable. Por exemplo, a StringBuilder classe sempre deve para ser de entrada/saída e uma matriz de cadeias de caracteres transmitida por valor é considerada como no.

Não é possível aplicar o InAttribute para um parâmetro modificado com o c#-estilo out palavra-chave. Para evitar confundir o In palavra-chave no Visual Basic com o InAttribute, menos o atributo, use o <[In]> formulário com o atributo entre colchetes.

Combinando o InAttribute e OutAttribute é particularmente útil quando aplicado a matrizes e formatados, não blittable tipos. Os chamadores ver as alterações que um receptor torna a esses tipos somente quando você aplicar dois atributos. Como esses tipos exigem a cópia durante o empacotamento, você pode usar InAttribute e OutAttribute para reduzir o desnecessárias cópias.

Para obter mais informações sobre o efeito de InAttribute no comportamento de marshaling, consulte atributos direcionais.

Exemplos

O exemplo a seguir mostra como aplicar o InAttribute e OutAttribute para uma plataforma de invocar o protótipo que passa uma matriz como um parâmetro. A combinação de atributos direcionais permite que o chamador ver as alterações feitas pelo receptor.

using System.Runtime.InteropServices;
using System;


// Declare a class member for each structure element.
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public class OpenFileName
{
    public int structSize = 0;
    public string filter = null;
    public string file = null;
    // ...
}

public class LibWrap
{
    // Declare a managed prototype for the unmanaged function.
    [DllImport("Comdlg32.dll", CharSet = CharSet.Unicode)]
    public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);
}

public class MainMethod
{
    static void Main()
    { }

}
Imports System.Runtime.InteropServices


' Declare a class member for each structure element.
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)> _
Public Class OpenFileName

   Public structSize As Integer = 0
   Public filter As String = Nothing
   Public file As String = Nothing
   ' ...

End Class 'OpenFileName

Public Class LibWrap
   ' Declare managed prototype for the unmanaged function.
   Declare Unicode Function GetOpenFileName Lib "Comdlg32.dll" ( _
      <[In](), Out()> ByVal ofn As OpenFileName) As Boolean
End Class 'LibWrap

Public Class App
    Public Shared Sub Main()

    End Sub 'Main
End Class 'App
using namespace System;
using namespace System::Runtime::InteropServices;


// Declare a class member for each structure element.

[StructLayout(LayoutKind::Sequential,CharSet=CharSet::Unicode)]
public ref class OpenFileName
{
public:
   int structSize;
   String^ filter;
   String^ file;
   // ...
};

public ref class LibWrap
{
public:

   // Declare a managed prototype for the unmanaged function.

   [DllImport("Comdlg32.dll",CharSet=CharSet::Unicode)]
   static bool GetOpenFileName( [In,Out]OpenFileName^ ofn );
};

void main() {}

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Acesso thread-safe

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Confira Também

OutAttribute
StringBuilder
Namespace System.Runtime.InteropServices
Tipos blittable e não blittable

Retornar ao início