VariantWrapper Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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_BYREF
werden 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) |