MarshalAsAttribute Klasa

Definicja

Wskazuje sposób organizowania danych między zarządzanym i niezarządzanym kodem.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)]
public sealed class MarshalAsAttribute : 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
Dziedziczenie
MarshalAsAttribute
Atrybuty

Przykłady

Poniższy przykład stosuje MarshalAsAttribute do pola, parametr metody i wartość zwracaną metody w typie zarządzanym.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

Poniższy przykład stosuje atrybut MarshalAsAttribute do właściwości: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

Uwagi

Ten atrybut można zastosować do parametrów, pól lub wartości zwracanych.You can apply this attribute to parameters, fields, or return values.

Ten atrybut jest opcjonalny, ponieważ każdy typ danych ma domyślne zachowanie organizowania.This attribute is optional, as each data type has a default marshaling behavior. Ten atrybut jest wymagany tylko wtedy, gdy dany typ może być zorganizowany do wielu typów.This attribute is only necessary when a given type can be marshaled to multiple types. Można na przykład zorganizować ciąg na kod niezarządzany jako LPStr, LPWStr, LPTStrlub BStr.For example, you can marshal a string to unmanaged code as either a LPStr, a LPWStr, a LPTStr, or a BStr. Domyślnie środowisko uruchomieniowe języka wspólnego określa parametr ciągu jako BStr metod COM.By default, the common language runtime marshals a string parameter as a BStr to COM methods. Można zastosować MarshalAsAttribute atrybutu do pojedynczego pola lub parametru, aby spowodować, że określony ciąg ma być zorganizowany jako LPStr zamiast 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. Tlbexp. exe (Eksporter biblioteki typów) przekazuje preferencje organizowania do środowiska uruchomieniowego języka wspólnego.The Tlbexp.exe (Type Library Exporter) passes your marshaling preferences to the common language runtime.

Niektóre parametry i zwracane wartości mają różne domyślne zachowanie w przypadku użycia z międzyoperacyjnym modelem COM lub wywołaniem platformy.Some parameters and return values have different default marshaling behavior when used with COM interop or platform invoke. Domyślnie środowisko uruchomieniowe dzieli parametr ciągu (i pola w typie wartości) jako LPStr do metody lub funkcji wywołania platformy.By default, the runtime marshals a string parameter (and fields in a value type) as a LPStr to a platform invoke method or function. Aby uzyskać dodatkowe informacje, zobacz domyślne zachowanie organizowania.For additional information, see Default Marshaling Behavior.

W większości przypadków atrybut po prostu identyfikuje format danych niezarządzanych przy użyciu wyliczenia UnmanagedType, jak pokazano w następującym C# podpisie: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)

Niektóre elementy członkowskie wyliczenia UnmanagedType wymagają dodatkowych informacji.Some UnmanagedType enumeration members require additional information. Na przykład dodatkowe informacje są niezbędne, gdy UnmanagedType jest LPArray.For example, additional information is needed when the UnmanagedType is LPArray. Pełny opis sposobu używania tego atrybutu z tablicami zawiera temat domyślne kierowanie dla tablic.For a complete description of how to use this attribute with arrays, see Default Marshaling for Arrays.

Tlbimp. exe (Importer biblioteki typów) stosuje również ten atrybut do parametrów, pól i wartości zwracanych, aby wskazać, że typ danych w bibliotece typów wejściowych nie jest domyślnym typem dla odpowiadającego typu danych zarządzanych.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 zawsze stosuje MarshalAsAttribute do String i Object typów dla jasności, niezależnie od typu określonego w bibliotece typów wejściowych.Tlbimp.exe always applies the MarshalAsAttribute to String and Object types for clarity, regardless of the type specified in the input type library.

Uwaga

MarshalAsAttribute nie obsługuje organizowania typów ogólnych.The MarshalAsAttribute does not support marshaling of generic types.

Konstruktory

MarshalAsAttribute(Int16)

Inicjuje nowe wystąpienie klasy MarshalAsAttribute z określoną wartością UnmanagedType.Initializes a new instance of the MarshalAsAttribute class with the specified UnmanagedType value.

MarshalAsAttribute(UnmanagedType)

Inicjuje nowe wystąpienie klasy MarshalAsAttribute z określonym UnmanagedType składowa wyliczeniem.Initializes a new instance of the MarshalAsAttribute class with the specified UnmanagedType enumeration member.

Pola

ArraySubType

Określa typ elementu niezarządzanej LPArray lub ByValArray.Specifies the element type of the unmanaged LPArray or ByValArray.

IidParameterIndex

Określa indeks parametru niezarządzanego atrybutu iid_is używanego przez COM.Specifies the parameter index of the unmanaged iid_is attribute used by COM.

MarshalCookie

Zawiera dodatkowe informacje dotyczące organizatora niestandardowego.Provides additional information to a custom marshaler.

MarshalType

Określa w pełni kwalifikowaną nazwę organizatora niestandardowego.Specifies the fully qualified name of a custom marshaler.

MarshalTypeRef

Implementuje MarshalType jako typ.Implements MarshalType as a type.

SafeArraySubType

Wskazuje typ elementu SafeArray.Indicates the element type of the SafeArray.

SafeArrayUserDefinedSubType

Wskazuje typ elementu zdefiniowanego przez użytkownika SafeArray.Indicates the user-defined element type of the SafeArray.

SizeConst

Wskazuje liczbę elementów w tablicy o stałej długości lub liczbę znaków (nie bajtów) w ciągu do zaimportowania.Indicates the number of elements in the fixed-length array or the number of characters (not bytes) in a string to import.

SizeParamIndex

Wskazuje parametr liczony od zera, który zawiera liczbę elementów tablicy, podobnie jak size_is w modelu COM.Indicates the zero-based parameter that contains the count of array elements, similar to size_is in COM.

Właściwości

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Odziedziczone po Attribute)
Value

Pobiera wartość UnmanagedType, do której mają być organizowane dane.Gets the UnmanagedType value the data is to be marshaled as.

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.Returns a value that indicates whether this instance is equal to a specified object.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca kod skrótu dla tego wystąpienia.Returns the hash code for this instance.

(Odziedziczone po Attribute)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
IsDefaultAttribute()

Gdy jest zastępowany w klasie pochodnej, wskazuje, czy wartość tego wystąpienia jest wartością domyślną klasy pochodnej.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Odziedziczone po Attribute)
Match(Object)

Gdy jest zastępowany w klasie pochodnej, zwraca wartość wskazującą, czy to wystąpienie jest zgodne z określonym obiektem.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.Maps a set of names to a corresponding set of dispatch identifiers.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, którego można użyć do uzyskania informacji o typie dla interfejsu.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.Provides access to properties and methods exposed by an object.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też