MarshalAsAttribute Klasse
TOC
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

MarshalAsAttribute-Klasse

 

Gibt an, wie die Daten zwischen verwaltetem und nicht verwaltetem Code gemarshallt werden.

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

System.Object
  System.Attribute
    System.Runtime.InteropServices.MarshalAsAttribute

[AttributeUsageAttribute(AttributeTargets.Field | AttributeTargets.Parameter | AttributeTargets.ReturnValue, 
	Inherited = false)]
[ComVisibleAttribute(true)]
public sealed class MarshalAsAttribute : Attribute

NameBeschreibung
System_CAPS_pubmethodMarshalAsAttribute(Int16)

Initialisiert eine neue Instanz der MarshalAsAttribute-Klasse mit dem angegebenen UnmanagedType-Wert.

System_CAPS_pubmethodMarshalAsAttribute(UnmanagedType)

Initialisiert eine neue Instanz der MarshalAsAttribute-Klasse mit dem angegebenen UnmanagedType-Enumerationsmember.

NameBeschreibung
System_CAPS_pubpropertyTypeId

Bei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Geerbt von Attribute.)

System_CAPS_pubpropertyValue

Ruft den UnmanagedType-Wert ab, als der die Daten gemarshallt werden sollen.

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Diese API unterstützt die producto-Infrastruktur und sollte nicht direkt aus Ihrem Code verwendet werden. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.(Geerbt von Attribute.)

System_CAPS_pubmethodGetHashCode()

Gibt den Hashcode für diese Instanz zurück.(Geerbt von Attribute.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von Object.)

System_CAPS_pubmethodIsDefaultAttribute()

Beim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist.(Geerbt von Attribute.)

System_CAPS_pubmethodMatch(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.(Geerbt von Attribute.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von Object.)

NameBeschreibung
System_CAPS_pubfieldArraySubType

Gibt den Elementtyp des nicht verwalteten UnmanagedType.LPArray oder UnmanagedType.ByValArray an.

System_CAPS_pubfieldIidParameterIndex

Gibt den Parameterindex des nicht verwalteten iid_is-Attributs an, das von COM verwendet wird.

System_CAPS_pubfieldMarshalCookie

Stellt zusätzliche Informationen für einen benutzerdefinierten Marshaller zur Verfügung.

System_CAPS_pubfieldMarshalType

Gibt den voll gekennzeichneten Namen eines benutzerdefinierten Marshallers an.

System_CAPS_pubfieldMarshalTypeRef

Implementiert MarshalAsAttribute.MarshalType als Typ.

System_CAPS_pubfieldSafeArraySubType

Gibt den Elementtyp von UnmanagedType.SafeArray an.

System_CAPS_pubfieldSafeArrayUserDefinedSubType

Gibt den benutzerdefinierten Elementtyp von UnmanagedType.SafeArray an.

System_CAPS_pubfieldSizeConst

Gibt die Anzahl der Elemente im Array fester Länger oder die Anzahl der Zeichen (nicht der Bytes) in einer zu importierenden Zeichenfolge an.

System_CAPS_pubfieldSizeParamIndex

Gibt den nullbasierten Parameter an, der die Anzahl von Arrayelementen enthält, vergleichbar mit size_is in COM.

NameBeschreibung
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).(Geerbt von Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.(Geerbt von Attribute.)

Dieses Attribut kann auf Parameter, Felder oder Rückgabewerte angewendet werden.

Dieses Attribut ist optional, da jeder Datentyp über ein Standardverhalten für das Marshallen verfügt.Dieses Attribut ist nur erforderlich, wenn ein angegebener Typ an mehrere Typen gemarshallt werden kann.Sie können eine Zeichenfolge z. B. als LPStr, LPWStr, LPTStr oder BStr an den nicht verwalteten Code marshallen.In der Standardeinstellung marshallt die Common Language Runtime einen Zeichenfolgenparameter für COM-Methoden als BStr.Das MarshalAsAttribute-Attribut kann auf ein einzelnes Feld bzw. einen einzelnen Parameter angewendet werden, damit diese bestimmte Zeichenfolge als LPStr anstatt als BStr gemarshallt wird. Tlbexp.exe (Type Library Exporter-Tool) übergibt die Marshallingeinstellungen an die Common Language Runtime.

Einige Parameter und Rückgabewerte weisen ein anderes Standardverhalten beim Marshalling auf, wenn sie mit COM-Interop oder Plattformaufrufen verwendet werden.In der Standardeinstellung marshallt die Laufzeit einen Zeichenfolgenparameter (und Felder in einem Werttyp) als LPStr an eine Plattformaufrufmethode oder -funktion.Weitere Informationen finden Sie unter Standardmarshallingverhalten.

In den meisten Fällen kennzeichnet das Attribut einfach das Format der nicht verwalteten Daten mithilfe der UnmanagedType-Enumeration, wie in der folgenden C#-Signatur dargestellt:

void
    MyMethod([MarshalAs(LPStr)] String s);

Für einige UnmanagedType-Enumerationsmember sind zusätzliche Informationen erforderlich.Zusätzliche Informationen sind beispielsweise erforderlich, wenn es sich bei UnmanagedType um LPArray handelt.Eine vollständige Beschreibung der Verwendung dieses Attributs mit Arrays finden Sie unter Diziler için Varsayılan Sıralama.

Tlbimp.exe (Type Library Importer) wendet dieses Attribut auch auf Parameter, Felder und Rückgabewerte an und gibt damit an, dass es sich bei dem Datentyp in der Eingabetypbibliothek nicht um den Standardtyp für den entsprechenden verwalteten Datentyp handelt.Aus Gründen der Eindeutigkeit wendet Tlbimp.exe immer MarshalAsAttribute auf den String-Typ und den Object-Typ an, ungeachtet des in der Eingabetypbibliothek angegebenen Typs.

System_CAPS_noteHinweis

Das MarshalAsAttribute unterstützt kein Marshalling von generischen Typen.

Im folgenden Beispiel wird die Platzierung von MarshalAsAttribute in verwaltetem Quellcode bei der Anwendung auf Parameter, Felder und Rückgabewerte veranschaulicht.

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

Im folgenden Visual Basic-Beispiel wird veranschaulicht, wie das MarshalAsAttribute-Attribut auf Eigenschaften angewendet wird.

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

Das folgende Beispiel zeigt den entsprechenden C#-Code:

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

Universal Windows Platform
Verfügbar seit 4.5
.NET Framework
Verfügbar seit 1.1
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Öffentliche statische (in Visual Basic freigegebene) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Zurück zum Anfang
Anzeigen:
© 2016 Microsoft