Freigeben über


VariantWrapper-Klasse

 

Veröffentlicht: Oktober 2016

Marshallt Daten vom Typ VT_VARIANT | VT_BYREF aus verwaltetem zu nicht verwaltetem Code. Diese Klasse kann nicht vererbt werden.

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

Vererbungshierarchie

System.Object
  System.Runtime.InteropServices.VariantWrapper

Syntax

[SerializableAttribute]
public sealed class VariantWrapper
[SerializableAttribute]
public ref class VariantWrapper sealed 
[<Sealed>]
[<SerializableAttribute>]
type VariantWrapper = class end
<SerializableAttribute>
Public NotInheritable Class VariantWrapper

Konstruktoren

Name Beschreibung
System_CAPS_pubmethod VariantWrapper(Object)

Initialisiert eine neue Instanz der VariantWrapper -Klasse für den angegebenen System.Object Parameter.

Eigenschaften

Name Beschreibung
System_CAPS_pubproperty WrappedObject

Ruft das Objekt, durch das VariantWrapper Objekt.

Methoden

Name Beschreibung
System_CAPS_pubmethod Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_pubmethod GetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethod GetType()

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

System_CAPS_pubmethod ToString()

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

Hinweise

Der Zweck der VariantWrapper besteht darin, eine Dereferenzierungsebene hinzuzufügen, beim Marshalling eines verwalteten Typs an den entsprechenden VARIANT Typ.

Verwenden Sie diese Klasse zum Umschließen einer Object das Interop-Marshaller als VT_VARIANT | VT_BYREF. In Version 1.0 und 1.1 von .NET Framework, war es nicht möglich, zum Marshallen von variant-Daten vom Typ VT_VARIANT | VT_BYREF zu nicht verwaltetem Code. Der Interop-Marshaller hat eine Variante des verwalteten Typs (z. B. VT_BSTR | VT_BYREF für String, oder VT_I4 | VT_BYREF für Int32), aber nicht VT_VARIANT | VT_BYREF.

Ein Vorteil der Verwendung VT_VARIANT | VT_BYREF Variante-Typen ist, dass der Typ der Daten während eines Methodenaufrufs geändert werden kann. Sie können z. B. übergeben einer VT_VARIANT| VT_BYREF variant-Typ enthält eine VT_BSTR und einen Variant zurückgegebenen abrufen, die enthält eine VT_I4 nach einem Methodenaufruf. Da die COM-Interop-Marshaller keine Möglichkeit zu wissen, wann übergeben VT_BSTR | VT_BYREF und wann übergeben VT_VARIANT | VT_BYREF, der verweist auf einen Variant, der enthält einen BSTR für Parameter als deklariert VARIANT *, können Sie mithilfe den Marshaller anweisen VariantWrapper.

Beachten Sie, dass die frühe Bindung nicht unterstützt wird. Sie können VariantWrapper nur beim Aufruf von InvokeMember oder mit einer nur-Dispatch-Schnittstelle, die in einer frühen gebundenen Weise aufgerufen. In c# müssen Sie auch verwenden die ref Schlüsselwort ByRef Semantik für alle Parameter vom Typ VariantWrapper. In Visual Basic ByRef Semantik werden automatisch für jeden impliziten Aufruf mit später Bindung hinzugefügt. Beachten Sie außerdem, Schachtelung VariantWrapper Objekte und Arrays von VariantWrapper Objekte wird nicht unterstützt.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die VariantWrapper -Klasse zum Umschließen einer Object das Interop-Marshaller als VT_VARIANT | VT_BYREF.

// Create an instance of an unmanged COM object.
UnmanagedComClass UnmanagedComClassInstance = new UnmanagedComClass();

// Create a string to pass to the COM object.
string helloString = "Hello World!";

// Wrap the string with the VariantWrapper class.
object var = new System.Runtime.InteropServices.VariantWrapper(helloString);

// Pass the wrapped object.
UnmanagedComClassInstance.MethodWithStringRefParam(ref var);
' Create an instance of an unmanged COM object.
Dim UnmanagedComClassInstance As New UnmanagedComClass()

' Create a string to pass to the COM object.
Dim helloString As String = "Hello World!"

' Wrap the string with the VariantWrapper class.
Dim var As Object = New System.Runtime.InteropServices.VariantWrapper(helloString)

' Pass the wrapped object.
UnmanagedComClassInstance.MethodWithStringRefParam(var)

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone
Verfügbar seit 8.1

Threadsicherheit

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Siehe auch

System.Runtime.InteropServices-Namespace

Zurück zum Anfang