VariantWrapper Klasse

Definition

Achtung

VariantWrapper and support for marshalling to the VARIANT type may be unavailable in future releases.

Marshallt Daten vom Typ VT_VARIANT | VT_BYREF von verwaltetem an nicht verwalteten Code. Diese Klasse kann nicht vererbt werden.

public ref class VariantWrapper sealed
[System.Obsolete("VariantWrapper and support for marshalling to the VARIANT type may be unavailable in future releases.")]
public sealed class VariantWrapper
public sealed class VariantWrapper
[System.Serializable]
public sealed class VariantWrapper
[<System.Obsolete("VariantWrapper and support for marshalling to the VARIANT type may be unavailable in future releases.")>]
type VariantWrapper = class
type VariantWrapper = class
[<System.Serializable>]
type VariantWrapper = class
Public NotInheritable Class VariantWrapper
Vererbung
VariantWrapper
Attribute

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie sie die VariantWrapper Klasse zum Umbrechen einer Object Klasse verwenden, die der Interop-Marshaler als VT_VARIANT | VT_BYREFübergeben wird.

// 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)

Hinweise

Der Zweck VariantWrapper besteht darin, eine Ebene der Indirektierung hinzuzufügen, wenn ein verwalteter Typ dem entsprechenden VARIANT Typ gemarstet wird.

Sie können diese Klasse verwenden, um einen Object umzuschließen, den der Interop-Marshaler als VT_VARIANT | VT_BYREF. In Den Versionen 1.0 und 1.1 des .NET Framework war es nicht möglich, Variantendaten des Typs VT_VARIANT | VT_BYREF auf nicht verwalteten Code zu marshallen. Der Interop-Marshaler übergibt eine Variante des verwalteten Typs (z. B VT_BSTR | VT_BYREF . für Stringoder VT_I4 | VT_BYREF für Int32), aber nicht VT_VARIANT | VT_BYREF.

Ein Vorteil der Verwendung VT_VARIANT | VT_BYREF von Variantentypen besteht darin, dass der Datentyp während eines Methodenaufrufs geändert werden kann. Sie können z. B. einen VT_VARIANT | VT_BYREF Variantentyp übergeben, der eine VT_BSTR Variante enthält und eine Variante abruft, die einen VT_I4 nach einem Methodenaufruf enthält. Da der COM-Interop-Marshaler keine Möglichkeit hat, zu wissen, wann VT_BSTR | VT_BYREF und wann übergeben VT_VARIANT | VT_BYREFwerden soll , was auf eine Variante verweist, die einen BSTR für Parameter deklarierten VARIANT *Parameter enthält, können Sie den Marshaler mithilfe von " VariantWrapperanweisen.

Beachten Sie, dass die frühzeitige Bindung nicht unterstützt wird; Sie können nur dann verwenden VariantWrapper , wenn Sie eine Dispatch-only-Schnittstelle aufrufen InvokeMember oder eine Nur-Dispatch-Schnittstelle verwenden, die frühzeitig aufgerufen wird. In C# müssen Sie auch das ref Schlüsselwort verwenden, um Semantik für jeden Parameter des Typs VariantWrapperanzugebenByRef. In Visual Basic ByRef werden Semantik für jeden impliziten spätbindungsaufruf automatisch hinzugefügt. Beachten Sie auch, dass verschachtelte VariantWrapper Objekte und Arrays von VariantWrapper Objekten nicht unterstützt werden.

Konstruktoren

VariantWrapper(Object)

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

Eigenschaften

WrappedObject

Ruft das von dem VariantWrapper-Objekt umschlossene Objekt ab.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für