VariantWrapper Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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. La classe non può essere ereditata.
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 usare la classe per eseguire il VariantWrapper wrapping di un Object oggetto che il gestore di marshalling di interoperabilità passa come 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 è aggiungere un livello di riferimento indiretto durante il marshalling di un tipo gestito al tipo corrispondente VARIANT
.
È possibile usare questa classe per eseguire il wrapping di un Object oggetto che il gestore di marshalling di interoperabilità passa come VT_VARIANT | VT_BYREF
. Nelle versioni 1.0 e 1.1 di .NET Framework non è stato possibile effettuare il marshalling dei dati varianti di tipo VT_VARIANT | VT_BYREF
a codice non gestito. Il gestore di marshalling di interoperabilità ha passato una variante del tipo gestito (ad esempio, VT_BSTR | VT_BYREF
per Stringo VT_I4 | VT_BYREF
per Int32), ma non VT_VARIANT | VT_BYREF
.
Un vantaggio dell'uso VT_VARIANT | VT_BYREF
di tipi variant è che il tipo di dati può essere modificato durante una chiamata al metodo. Ad esempio, è possibile passare un VT_VARIANT | VT_BYREF
tipo variant che contiene un VT_BSTR
oggetto e ottenere una variante restituita contenente un VT_I4
oggetto dopo una chiamata al metodo. Poiché il gestore di marshalling di interoperabilità COM non è in grado di sapere quando passare VT_BSTR | VT_BYREF
e quando passare VT_VARIANT | VT_BYREF
, che punta a una variante che contiene un BSTR
per i parametri dichiarati come VARIANT *
, è possibile indicare al gestore di marshalling usando VariantWrapper.
Si noti che l'associazione anticipata non è supportata; è possibile usare VariantWrapper solo quando si chiama InvokeMember o con un'interfaccia di sola invio chiamata in modo con associazione anticipata. In C#, è necessario usare anche la parola chiave per specificare ByRef
la ref
semantica per qualsiasi parametro di tipo VariantWrapper. In Visual Basic, ByRef
la semantica viene aggiunta automaticamente per ogni chiamata di associazione tardiva implicita. Si noti anche che l'annidamento VariantWrapper di oggetti e matrici di VariantWrapper oggetti non è supportato.
Costruttori
VariantWrapper(Object) |
Obsoleti.
Inizializza una nuova istanza della classe VariantWrapper per il parametro Object specificato. |
Proprietà
WrappedObject |
Obsoleti.
Ottiene l'oggetto incluso dall'oggetto VariantWrapper. |
Metodi
Equals(Object) |
Obsoleti.
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Obsoleti.
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Obsoleti.
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Obsoleti.
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Obsoleti.
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |