VariantWrapper Clase

Definición

Precaución

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

Calcula las referencias de datos de tipo VT_VARIANT | VT_BYREF de código administrado a no administrado. Esta clase no puede heredarse.

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
Herencia
VariantWrapper
Atributos

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la VariantWrapper clase para encapsular que Object el serializador de interoperabilidad pasa como 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)

Comentarios

El propósito de VariantWrapper es agregar un nivel de direccionamiento indirecto al serializar un tipo administrado al tipo correspondiente VARIANT .

Puede usar esta clase para encapsular que Object el serializador de interoperabilidad pasa como VT_VARIANT | VT_BYREF. En las versiones 1.0 y 1.1 de la .NET Framework, no era posible serializar datos variantes de tipo VT_VARIANT | VT_BYREF a código no administrado. El serializador de interoperabilidad pasó una variante del tipo administrado (por ejemplo, VT_BSTR | VT_BYREF para String, o VT_I4 | VT_BYREF para Int32), pero no VT_VARIANT | VT_BYREF.

Una ventaja de usar VT_VARIANT | VT_BYREF tipos variant es que el tipo de datos se puede cambiar durante una llamada al método. Por ejemplo, puede pasar un VT_VARIANT | VT_BYREF tipo de variante que contenga y VT_BSTR obtener una variante devuelta que contenga una VT_I4 después de una llamada de método. Dado que el serializador de interoperabilidad COM no tiene ninguna manera de saber cuándo pasar VT_BSTR | VT_BYREF y cuándo pasar VT_VARIANT | VT_BYREF, que apunta a una variante que contiene un BSTR para los parámetros declarados como VARIANT *, puede indicar al serializador mediante VariantWrapper.

Tenga en cuenta que no se admite el enlace anticipado; Solo se puede usar VariantWrapper al llamar a InvokeMember o con una interfaz de solo distribución llamada de forma temprana. En C#, también debe usar la palabra clave para especificar ByRef la ref semántica de cualquier parámetro de tipo VariantWrapper. En Visual Basic, ByRef la semántica se agrega automáticamente para cada llamada implícita de enlace en tiempo de espera. Tenga en cuenta también que no se admite el anidamiento VariantWrapper de objetos y matrices de VariantWrapper objetos.

Constructores

VariantWrapper(Object)

Inicializa una nueva instancia de la clase VariantWrapper para el parámetro Object especificado.

Propiedades

WrappedObject

Obtiene el objeto ajustado por el objeto VariantWrapper.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a