(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

InAttribute-Klasse

Gibt an, dass Daten vom Aufrufer an den Aufgerufenen gemarshallt werden, jedoch nicht zurück an den Aufrufer.

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

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

[AttributeUsageAttribute(AttributeTargets.Parameter, Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class InAttribute : Attribute

Der InAttribute-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsInAttributeInitialisiert eine neue Instanz der InAttribute-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftTypeIdBei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEqualsInfrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetHashCodeGibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeIsDefaultAttributeBeim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkMatchBeim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoRuft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)
Zum Seitenanfang

Dieses Attribut kann auf Parameter angewendet werden.

Das InAttribute ist optional. Das Attribut wird nur für COM-Interop und Plattformaufrufe unterstützt. Wenn keine expliziten Einstellungen vorhanden sind, nimmt der Interop-Marshaller Regeln auf der Grundlage des Parametertyps an, wobei es keine Rolle spielt, ob der Parameter als Verweis oder als Wert übergeben wird und ob der Typ blitfähig oder nicht blitfähig ist. Beispielsweise wird für die StringBuilder-Klasse immer angenommen, dass sie vom Typ In/Out ist, und für ein als Wert übergebenes Array von Zeichenfolgen wird angenommen, das es vom Typ In ist.

InAttribute kann nicht auf einen Parameter angewendet werden, der mit dem out-Schlüsselwort aus C# geändert wurde. Um eine Verwechselung des In-Schlüsselworts in Visual Basic mit InAttribute zu vermeiden ("In" ohne "Attribute"), sollten Sie das <[In]>-Format verwenden, bei dem das Attribut in eckige Klammern eingeschlossen ist.

Das Kombinieren von InAttribute und OutAttribute bietet sich besonders an, wenn sie auf auf Arrays und formatierte, nicht blitfähige Typen angewendet werden. Für Aufrufer werden die von einem Aufgerufenen an diesen Typen vorgenommenen Änderungen nur dann angezeigt, wenn beide Attribute angewendet wurden. Da bei diesen Typen während des Marshallens Kopiervorgänge erforderlich sind, können Sie mithilfe von InAttribute und OutAttribute die Anzahl nicht benötigter Kopien reduzieren.

Weitere Informationen über die Auswirkung des InAttribute auf das Marshallingverhalten finden Sie unter Direktionale Attribute.

Im folgenden Beispiel wird die Anwendung von InAttribute und OutAttribute auf den Prototyp eines Plattformaufrufs veranschaulicht, dem ein Array als Parameter übergeben wird. Durch die Kombination der Richtungsattribute kann der Aufrufer die vom Aufgerufenen vorgenommenen Änderungen identifizieren.


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()
    { }

}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft