InAttribute Třída

Definice

Označuje, že data by měla být zařazena z volajícího na volaný, ale zpět volajícímu.Indicates that data should be marshaled from the caller to the callee, but not back to the caller.

public ref class InAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class InAttribute : Attribute
type InAttribute = class
    inherit Attribute
Public NotInheritable Class InAttribute
Inherits Attribute
Dědičnost
InAttribute
Atributy

Příklady

Následující příklad ukazuje, jak použít InAttribute a OutAttribute na prototyp vyvolání platformy, který předává pole jako parametr.The following example shows how to apply the InAttribute and OutAttribute to a platform invoke prototype that passes an array as a parameter. Kombinace směrových atributů umožňuje volajícímu zobrazit změny provedené volaným.The combination of directional attributes allows the caller to see the changes made by the callee.

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;
    // ...
};

private ref class NativeMethods
{
public:

    // Declare a managed prototype for the unmanaged function.

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

void main() {}
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;
    // ...
}

internal static class NativeMethods
{
    // Declare a managed prototype for the unmanaged function.
    [DllImport("Comdlg32.dll", CharSet = CharSet.Unicode)]
    internal 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

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

Public Class App
    Public Shared Sub Main()

    End Sub
End Class

Poznámky

Tento atribut lze použít pro parametry.You can apply this attribute to parameters.

InAttribute je volitelná.The InAttribute is optional. Atribut je podporován pouze pro zprostředkovatele komunikace s objekty COM a volání platformy.The attribute is supported for COM interop and platform invoke only. V případě nedostatku explicitního nastavení předpokládá zařazovací modul Interop pravidla založená na typu parametru, zda je parametr předán odkazem nebo podle hodnoty a zda je typ přenositelný nebo Nepřenositelný.In the absence of explicit settings, the interop marshaler assumes rules based on the parameter type, whether the parameter is passed by reference or by value, and whether the type is blittable or non-blittable. Například třída StringBuilder se vždycky předpokládá, že je v/ven a pole řetězců předané hodnotou je považováno za.For example, the StringBuilder class is always assumed to be In/Out and an array of strings passed by value is assumed to be In.

InAttribute nelze použít pro parametr upravený pomocí klíčového slova C#-Style out.You cannot apply the InAttribute to a parameter modified with the C#-styled out keyword. Chcete-li zabránit matoucí klíčové slovo In v Visual Basic s atributem InAttribute, mínus, použijte formulář <[In]> s hranatými závorkami kolem atributu.To avoid confusing the In keyword in Visual Basic with the InAttribute, minus Attribute, use the <[In]> form with brackets around the attribute.

Kombinování InAttribute a OutAttribute je zvláště užitečné při použití u polí a formátovaných, nepřímo nepřenositelné typy.Combining the InAttribute and OutAttribute is particularly useful when applied to arrays and formatted, non-blittable types. Volající uvidí změny, které volaný provede pro tyto typy pouze při použití obou atributů.Callers see the changes a callee makes to these types only when you apply both attributes. Vzhledem k tomu, že tyto typy vyžadují kopírování během zařazování, můžete použít InAttribute a OutAttribute k omezení zbytečných kopií.Since these types require copying during marshaling, you can use InAttribute and OutAttribute to reduce unnecessary copies.

Další informace o vlivu InAttribute na chování zařazování naleznete v tématu směrovou atributy.For more information on the effect of InAttribute on marshaling behavior, see Directional Attributes.

Konstruktory

InAttribute()

Inicializuje novou instanci třídy InAttribute třídy.Initializes a new instance of the InAttribute class.

Vlastnosti

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.Returns a value that indicates whether this instance is equal to a specified object.

(Zděděno od Attribute)
GetHashCode()

Vrátí kód hash této instance.Returns the hash code for this instance.

(Zděděno od Attribute)
GetType()

Získá Type aktuální instance.Gets the Type of the current instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda je tato instance rovna zadanému objektu.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří kopii aktuálního Objectbez podstruktury.Creates a shallow copy of the current Object.

(Zděděno od Object)
ToString()

Vrací řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Zděděno od Object)

Explicitní implementace rozhraní

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.Maps a set of names to a corresponding set of dispatch identifiers.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu pro objekt, který lze použít k získání informací o typu pro rozhraní.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.Provides access to properties and methods exposed by an object.

(Zděděno od Attribute)

Platí pro

Viz také