InAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, dass Daten vom Aufrufer an den Angerufenen gemarstet werden sollen, aber nicht zurück an den Anrufer.
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
- Attribute
Beispiele
Das folgende Beispiel zeigt, wie Sie den Prototyp OutAttribute einer InAttribute Plattform anwenden, die ein Array als Parameter übergibt. Die Kombination von direktionalen Attributen ermöglicht es dem Aufrufer, die vom 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-Interoperabilität und Plattform-Aufruf 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 blittbar ist. Die Klasse wird z. B. immer als In/Out angenommen, und es wird angenommen, StringBuilder dass ein Array von Zeichenfolgen, die durch den Wert übergeben werden, in.
Sie können den InAttribute parameter, der mit dem Schlüsselwort "C#-styled out " geändert wurde, nicht anwenden. Um das In Schlüsselwort in Visual Basic mit dem InAttributeMinus-Attribut zu vermeiden, verwenden Sie das <[In]> Formular mit eckigen Klammern um das Attribut.
Das Kombinieren der InAttribute Matrix und OutAttribute ist besonders nützlich, wenn sie auf Arrays und formatierte, nicht unterschreibbare Typen angewendet wird. Anrufer sehen die Änderungen, die ein Angerufener an diesen Typen vornimmt, nur, wenn Sie beide Attribute anwenden. Da diese Typen während des Marshallings kopieren müssen, können Sie unnötige Kopien verwenden InAttribute und OutAttribute reduzieren.
Konstruktoren
| Name | Beschreibung |
|---|---|
| InAttribute() |
Initialisiert eine neue Instanz der InAttribute-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| TypeId |
Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute. (Geerbt von Attribute) |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| GetHashCode() |
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| IsDefaultAttribute() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
| Match(Object) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| _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 denen 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) |
Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden. (Geerbt von Attribute) |