InAttribute Klasse

Definition

Gibt an, dass Daten vom Aufrufer an den Aufgerufenen, aber nicht wieder an den Aufrufer gemarshallt werden sollen.

public ref class InAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
public sealed class InAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class InAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)>]
type InAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Parameter, Inherited=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type InAttribute = class
    inherit Attribute
Public NotInheritable Class InAttribute
Inherits Attribute
Vererbung
InAttribute
Attribute

Beispiele

Im folgenden Beispiel wird gezeigt, wie Sie den Prototyp einer Plattform anwenden und OutAttribute einen Prototyp aufrufen, der InAttribute ein Array als Parameter übergibt. Die Kombination von richtungsdirektionalen Attributen ermöglicht dem Aufrufer, die von der Angerufenen vorgenommenen Änderungen anzuzeigen.

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

Hinweise

Sie können dieses Attribut auf Parameter anwenden.

Dies InAttribute ist optional. Das Attribut wird nur für COM-Interop- und Plattformaufrufe unterstützt. Wenn keine expliziten Einstellungen vorhanden sind, geht der Interop-Marshaler von Regeln basierend auf dem Parametertyp aus, unabhängig davon, ob der Parameter durch Verweis oder Wert übergeben wird, und ob der Typ blittbar oder nicht belittbar ist. Die Klasse wird z. B StringBuilder . immer als In/Out angenommen, und ein Array von Zeichenfolgen, die vom Wert übergeben werden, wird als In angenommen.

Sie können den Parameter nicht anwenden, der InAttribute mit dem C#-styled-Schlüsselwort geändert wurde out . Verwenden Sie das Formular mit eckigen Klammern um das <[In]> Attribut, um das In Schlüsselwort in Visual Basic mit dem InAttributeMinus-Attribut zu vermeiden.

Das Kombinieren der InAttribute und OutAttribute ist besonders nützlich, wenn sie auf Arrays und formatierte, nicht durchlittbare Typen angewendet wird. Aufrufer sehen die Änderungen, die ein angerufener Benutzer an diesen Typen vorgenommen hat, nur, wenn Sie beide Attribute anwenden. Da diese Typen das Kopieren während des Marshalings erfordern, können Sie unnötige Kopien verwenden InAttribute und OutAttribute reduzieren.

Weitere Informationen zum Effekt des InAttribute Marshalingverhaltens finden Sie unter "Directional Attributes".

Konstruktoren

InAttribute()

Initialisiert eine neue Instanz der InAttribute-Klasse.

Eigenschaften

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für

Siehe auch