Freigeben über


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 die VariantWrapper -Klasse verwendet wird, um eine Object umzuschließen, die der Interop-Marshaller als VT_VARIANT | VT_BYREFübergibt.

// 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 von VariantWrapper besteht darin, eine Dereferenzierungsebene hinzuzufügen, wenn ein verwalteter Typ zum entsprechenden VARIANT Typ gemarshallt wird.

Sie können diese Klasse verwenden, um eine Object umzuschließen, die der Interop-Marshaller als VT_VARIANT | VT_BYREFübergibt. In den Versionen 1.0 und 1.1 von .NET Framework war es nicht möglich, Variantendaten vom Typ VT_VARIANT | VT_BYREF in nicht verwalteten Code zu marshallen. Der Interop-Marshaller hat eine Variante des verwalteten Typs übergeben (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 Variant-Typ übergeben, der einen VT_BSTR enthält, und eine zurückgegebene Variante abrufen, die nach einem Methodenaufruf einen VT_I4 enthält. Da der COM-Interop-Marshaller 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 eine BSTR für Als deklarierte VARIANT *Parameter enthält, können Sie den Marshaller mithilfe VariantWrappervon anweisen.

Beachten Sie, dass eine frühzeitige Bindung nicht unterstützt wird. Sie können nur verwenden VariantWrapper , wenn Sie oder mit einer Nur-Dispatch-Schnittstelle aufrufen InvokeMember , die früh gebunden aufgerufen wird. In C# müssen Sie auch das Schlüsselwort verwenden, um die ref Semantik für jeden Parameter des Typs VariantWrapperanzugebenByRef. In Visual Basic ByRef wird die Semantik automatisch für jeden impliziten Aufruf der späten Bindung hinzugefügt. Beachten Sie auch, dass das Schachteln VariantWrapper von Objekten und Arrays von VariantWrapper Objekten nicht unterstützt wird.

Konstruktoren

VariantWrapper(Object)
Veraltet.

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

Eigenschaften

WrappedObject
Veraltet.

Ruft das von dem VariantWrapper-Objekt umschlossene Objekt ab.

Methoden

Equals(Object)
Veraltet.

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

(Geerbt von Object)
GetHashCode()
Veraltet.

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()
Veraltet.

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()
Veraltet.

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()
Veraltet.

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

(Geerbt von Object)

Gilt für: