OutAttribute Klas

Definitie

Geeft aan dat gegevens moeten worden marshaled van callee terug naar beller.

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

Voorbeelden

In het volgende voorbeeld ziet u hoe u het InAttribute en OutAttribute op een platform aanroept prototype waarmee een matrix als parameter wordt doorgegeven. Met de combinatie van directionele kenmerken kan de aanroeper de wijzigingen zien die door de aanroeper zijn aangebracht.

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

Opmerkingen

U kunt dit kenmerk toepassen op parameters.

De OutAttribute optie is optioneel. Het kenmerk wordt alleen ondersteund voor COM-interop- en platformoproepen. Als er geen expliciete instellingen zijn, gaat de interop marshaler uit van regels op basis van het parametertype, of de parameter wordt doorgegeven door verwijzing of op waarde, en of het type belicht of niet-belichtbaar is. De klasse wordt bijvoorbeeld StringBuilder altijd in/uit genomen en een matrix met tekenreeksen die door de waarde worden doorgegeven, wordt verondersteld in te zijn.

Out-only gedrag is nooit een standaard marshaling gedrag voor parameters. U kunt de OutAttribute waarde- en verwijzingstypen toepassen die door verwijzing worden doorgegeven om het gedrag In/Out te wijzigen in het gedrag alleen-uit, wat gelijk is aan het gebruik van het out trefwoord in C#. Matrices die worden doorgegeven door een waarde, die standaard worden doorgegeven als alleen-in-parameters, kunnen bijvoorbeeld worden gewijzigd in Alleen-out. Het gedrag biedt echter niet altijd verwachte semantiek wanneer de typen all-blittable elementen of velden bevatten, omdat de interop marshaler gebruikmaakt van vastmaken. Als u niet wilt dat gegevens worden doorgegeven aan de gebruiker, kan out-only marshaling betere prestaties bieden voor niet-belichte typen.

Het combineren van de InAttribute en OutAttribute is met name handig wanneer deze wordt toegepast op matrices en opgemaakte, niet-belichte typen. Bellers zien alleen de wijzigingen die een gebruiker aanbrengt in deze typen wanneer u beide kenmerken toepast. Aangezien deze typen kopiëren tijdens marshaling vereisen, kunt u onnodige kopieën gebruiken InAttribute en OutAttribute verminderen.

Zie OutAttribute voor meer informatie over het effect van marshaling behavior.

Constructors

Name Description
OutAttribute()

Initialiseert een nieuw exemplaar van de OutAttribute klasse.

Eigenschappen

Name Description
TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op

Zie ook