VariantWrapper Classe

Definizione

Attenzione

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

Esegue il marshalling dei dati di tipo VT_VARIANT | VT_BYREF dal codice gestito al codice non gestito.Marshals data of type VT_VARIANT | VT_BYREF from managed to unmanaged code. La classe non può essere ereditata.This class cannot be inherited.

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
Ereditarietà
VariantWrapper
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato come utilizzare la VariantWrapper classe per eseguire il wrapping di un oggetto di Object cui il gestore di marshalling di interoperabilità passa VT_VARIANT | VT_BYREF .The following code example demonstrates how to use the VariantWrapper class to wrap an Object that the interop marshaler passes as 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)

Commenti

Lo scopo di VariantWrapper è quello di aggiungere un livello di riferimento indiretto quando si effettua il marshalling di un tipo gestito nel VARIANT tipo corrispondente.The purpose of VariantWrapper is to add one level of indirection when marshaling a managed type to the corresponding VARIANT type.

È possibile usare questa classe per eseguire il wrapping di un oggetto di Object cui il gestore di marshalling di interoperabilità passa VT_VARIANT | VT_BYREFYou can use this class to wrap an Object that the interop marshaler passes as VT_VARIANT | VT_BYREF. Nelle versioni 1,0 e 1,1 del .NET Framework non è stato possibile effettuare il marshalling dei dati Variant di tipo nel VT_VARIANT | VT_BYREF codice non gestito.In versions 1.0 and 1.1 of the .NET Framework, it was not possible to marshal variant data of type VT_VARIANT | VT_BYREF to unmanaged code. Il gestore di marshalling di interoperabilità ha passato una variante del tipo gestito, ad esempio VT_BSTR | VT_BYREF per String o VT_I4 | VT_BYREF per, Int32 ma non VT_VARIANT | VT_BYREF .The interop marshaler passed a variant of the managed type (for example, VT_BSTR | VT_BYREF for String, or VT_I4 | VT_BYREF for Int32), but not VT_VARIANT | VT_BYREF.

Un vantaggio dell'uso dei VT_VARIANT | VT_BYREF tipi Variant è che il tipo di dati può essere modificato durante una chiamata al metodo.One advantage of using VT_VARIANT | VT_BYREF variant types is that the type of data can be changed during a method call. È ad esempio possibile passare un VT_VARIANT | VT_BYREF tipo Variant che contiene un oggetto VT_BSTR e ottenere un oggetto Variant restituito che contiene un oggetto VT_I4 dopo una chiamata al metodo.For example, you can pass a VT_VARIANT | VT_BYREF variant type that contains a VT_BSTR and get a variant returned that contains a VT_I4 after a method call. Poiché il gestore di marshalling di interoperabilità COM non ha modo di sapere quando passare VT_BSTR | VT_BYREF e quando passare VT_VARIANT | VT_BYREF , che fa riferimento a una variante che contiene un BSTR per i parametri dichiarati come VARIANT * , è possibile istruire il gestore di marshalling utilizzando VariantWrapper .Because the COM interop marshaler has no way of knowing when to pass VT_BSTR | VT_BYREF and when to pass VT_VARIANT | VT_BYREF, which points to a variant that contains a BSTR for parameters declared as VARIANT *, you can instruct the marshaler by using VariantWrapper.

Si noti che l'associazione anticipata non è supportata. è possibile utilizzare VariantWrapper solo quando si chiama InvokeMember o con un'interfaccia di solo dispatch chiamata in un modo ad associazione anticipata.Note that early binding is not supported; you can use VariantWrapper only when calling InvokeMember or with a Dispatch-only interface called in an early bound fashion. In C# è anche necessario usare la ref parola chiave per specificare la ByRef semantica per qualsiasi parametro di tipo VariantWrapper .In C#, you must also use the ref keyword to specify ByRef semantics for any parameter of type VariantWrapper. In Visual Basic ByRef la semantica viene aggiunta automaticamente per ogni chiamata di associazione tardiva implicita.In Visual Basic, ByRef semantics are added automatically for every implicit late binding call. Si noti inoltre che la nidificazione VariantWrapper di oggetti e matrici di VariantWrapper oggetti non è supportata.Also note that nesting VariantWrapper objects and arrays of VariantWrapper objects is not supported.

Costruttori

VariantWrapper(Object)

Inizializza una nuova istanza della classe VariantWrapper per il parametro Object specificato.Initializes a new instance of the VariantWrapper class for the specified Object parameter.

Proprietà

WrappedObject

Ottiene l'oggetto incluso dall'oggetto VariantWrapper.Gets the object wrapped by the VariantWrapper object.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Si applica a