MarshalAsAttribute MarshalAsAttribute MarshalAsAttribute MarshalAsAttribute Class

Définition

Indique comment marshaler les données entre du code managé et du code non managé.Indicates how to marshal the data between managed and unmanaged code.

public ref class MarshalAsAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.ReturnValue, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MarshalAsAttribute : Attribute
type MarshalAsAttribute = class
    inherit Attribute
Public NotInheritable Class MarshalAsAttribute
Inherits Attribute
Héritage
MarshalAsAttributeMarshalAsAttributeMarshalAsAttributeMarshalAsAttribute
Attributs

Exemples

L’exemple suivant applique le MarshalAsAttribute à un champ, un paramètre de méthode et une méthode de retourner la valeur dans un type managé.The following example applies the MarshalAsAttribute to a field, a method parameter, and a method return value in a managed type.

using System;
using System.Text;
using System.Runtime.InteropServices;


class Program
{

//Applied to a parameter.
  public void M1([MarshalAs(UnmanagedType.LPWStr)]String msg) {}


//Applied to a field within a class.
  class MsgText {
                [MarshalAs(UnmanagedType.LPWStr)]
                public String msg = "Hello World";
                }

//Applied to a return value.
[return: MarshalAs(UnmanagedType.LPWStr)]
    public String GetMessage()
    {
        return "Hello World";
    }


static void Main(string[] args)
    {  }
}
Imports System.Runtime.InteropServices

Module Module1

    Sub Main()

    End Sub

    'Applied to a parameter.
    Public Sub M1(<MarshalAsAttribute(UnmanagedType.LPWStr)> ByVal msg As String)
        msg = msg + "Goodbye"
    End Sub

    'Applied to a field within a class.
    Class MsgText
        <MarshalAsAttribute(UnmanagedType.LPWStr)> Public msg As String
    End Class

    'Applied to a return value.
    Public Function M2() As <MarshalAsAttribute(UnmanagedType.LPWStr)> String
        Return "Hello World"
    End Function

End Module

L’exemple suivant applique le MarshalAsAttribute à une propriété d’attribut :The following example applies the MarshalAsAttribute attribute to a property:

decimal _money;   

public decimal Money 
{
   [return: MarshalAs(UnmanagedType.Currency)]
   get { return this._money; }
   [param: MarshalAs(UnmanagedType.Currency)]
   set { this._money = value; }
}
Dim _money As Decimal   

Public Property Money As <MarshalAs(UnmanagedType.Currency)> Decimal 
   Get
      Return Me._money
   End Get
   Set(<MarshalAs(UnmanagedType.Currency)> value As Decimal)
      Me._money = value
   End Set   
End Property

Remarques

Vous pouvez appliquer cet attribut à des paramètres, champs ou valeurs de retour.You can apply this attribute to parameters, fields, or return values.

Cet attribut est facultatif, car chaque type de données a un comportement de marshaling par défaut.This attribute is optional, as each data type has a default marshaling behavior. Cet attribut est nécessaire uniquement lorsqu’un type donné peut être marshalé à plusieurs types.This attribute is only necessary when a given type can be marshaled to multiple types. Par exemple, vous pouvez marshaler une chaîne au code non managé, soit comme un LPStr, un LPWStr, un LPTStr, ou un BStr.For example, you can marshal a string to unmanaged code as either a LPStr, a LPWStr, a LPTStr, or a BStr. Par défaut, le common language runtime marshale un paramètre de chaîne comme un BStr aux méthodes COM.By default, the common language runtime marshals a string parameter as a BStr to COM methods. Vous pouvez appliquer le MarshalAsAttribute d’attribut à un champ individuel ou un paramètre pour que cette chaîne particulière doivent être marshalées en tant qu’un LPStr au lieu d’un BStr.You can apply the MarshalAsAttribute attribute to an individual field or parameter to cause that particular string to be marshaled as a LPStr instead of a BStr. Le Tlbexp.exe (exportateur) passe vos préférences de marshaling pour le common language runtime.The Tlbexp.exe (Type Library Exporter) passes your marshaling preferences to the common language runtime.

Certains paramètres et les valeurs de retour ont par défaut différent lorsqu’il est utilisé avec COM interop de comportement de marshaling ou non managé.Some parameters and return values have different default marshaling behavior when used with COM interop or platform invoke. Par défaut, le runtime marshale un paramètre de chaîne (et les champs dans un type valeur) en tant qu’un LPStr à une plateforme appeler la méthode ou fonction.By default, the runtime marshals a string parameter (and fields in a value type) as a LPStr to a platform invoke method or function. Pour plus d’informations, consultez comportement de Marshaling par défaut.For additional information, see Default Marshaling Behavior.

Dans la plupart des cas, l’attribut identifie simplement le format des données non managées avec le UnmanagedType énumération, comme indiqué dans la signature c# suivante :In most cases, the attribute simply identifies the format of the unmanaged data using the UnmanagedType enumeration, as shown in the following C# signature:

public void SomeMethod([MarshalAs(UnmanagedType.LPStr)] String s)
Public Sub SomeMethod(<MarshalAs(UnmanagedType.LPStr)> s As String)

Certains UnmanagedType membres de l’énumération exiger des informations supplémentaires.Some UnmanagedType enumeration members require additional information. Par exemple, des informations supplémentaires sont nécessaires lorsque la UnmanagedType est LPArray.For example, additional information is needed when the UnmanagedType is LPArray. Pour obtenir une description complète de l’utilisation de cet attribut avec des tableaux, consultez Marshaling par défaut pour les tableaux.For a complete description of how to use this attribute with arrays, see Default Marshaling for Arrays.

Le Tlbimp.exe (Type Library Importer) s’applique également cet attribut à des paramètres, des champs et des valeurs de retour pour indiquer que le type de données dans la bibliothèque de types d’entrée n’est pas le type par défaut pour le type de données managées correspondant.The Tlbimp.exe (Type Library Importer) also applies this attribute to parameters, fields, and return values to indicate that the data type in the input type library is not the default type for the corresponding managed data type. Tlbimp.exe applique toujours le MarshalAsAttribute à String et Object types par souci de clarté, quel que soit le type spécifié dans la bibliothèque de types d’entrée.Tlbimp.exe always applies the MarshalAsAttribute to String and Object types for clarity, regardless of the type specified in the input type library.

Notes

Le MarshalAsAttribute ne prend pas en charge le marshaling de types génériques.The MarshalAsAttribute does not support marshaling of generic types.

Constructeurs

MarshalAsAttribute(Int16) MarshalAsAttribute(Int16) MarshalAsAttribute(Int16) MarshalAsAttribute(Int16)

Initialise une nouvelle instance de la classe MarshalAsAttribute avec la valeur UnmanagedType spécifiée.Initializes a new instance of the MarshalAsAttribute class with the specified UnmanagedType value.

MarshalAsAttribute(UnmanagedType) MarshalAsAttribute(UnmanagedType) MarshalAsAttribute(UnmanagedType) MarshalAsAttribute(UnmanagedType)

Initialise une nouvelle instance de la classe MarshalAsAttribute avec le membre de l'énumération UnmanagedType spécifié.Initializes a new instance of the MarshalAsAttribute class with the specified UnmanagedType enumeration member.

Champs

ArraySubType ArraySubType ArraySubType ArraySubType

Spécifie le type d'élément des champs LPArray ou ByValArray managés.Specifies the element type of the unmanaged LPArray or ByValArray.

IidParameterIndex IidParameterIndex IidParameterIndex IidParameterIndex

Spécifie l'index de paramètre de l'attribut iid_is non managé utilisé par COM.Specifies the parameter index of the unmanaged iid_is attribute used by COM.

MarshalCookie MarshalCookie MarshalCookie MarshalCookie

Fournit des informations supplémentaires à un marshaleur personnalisé.Provides additional information to a custom marshaler.

MarshalType MarshalType MarshalType MarshalType

Spécifie le nom qualifié complet d'un marshaleur personnalisé.Specifies the fully qualified name of a custom marshaler.

MarshalTypeRef MarshalTypeRef MarshalTypeRef MarshalTypeRef

Implémente MarshalType en tant que type.Implements MarshalType as a type.

SafeArraySubType SafeArraySubType SafeArraySubType SafeArraySubType

Indique le type d'élément de SafeArray.Indicates the element type of the SafeArray.

SafeArrayUserDefinedSubType SafeArrayUserDefinedSubType SafeArrayUserDefinedSubType SafeArrayUserDefinedSubType

Indique le type d'élément défini par l'utilisateur de SafeArray.Indicates the user-defined element type of the SafeArray.

SizeConst SizeConst SizeConst SizeConst

Indique le nombre d'éléments dans le tableau de longueur fixe ou le nombre de caractères (non d'octets) dans une chaîne à importer.Indicates the number of elements in the fixed-length array or the number of characters (not bytes) in a string to import.

SizeParamIndex SizeParamIndex SizeParamIndex SizeParamIndex

Indique le paramètre de base zéro qui contient le nombre d'éléments de tableau, semblable à size_is dans COM.Indicates the zero-based parameter that contains the count of array elements, similar to size_is in COM.

Propriétés

TypeId TypeId TypeId TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
Value Value Value Value

Obtient la valeur UnmanagedType sous laquelle les données doivent être marshalées.Gets the UnmanagedType value the data is to be marshaled as.

Méthodes

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Retourne le code de hachage de cette instance.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

S’applique à

Voir aussi