Clase VariantWrapper
Publicado: octubre de 2016
Calcula las referencias de tipo VT_VARIANT | VT_BYREF desde código administrado a código no administrado. Esta clase no puede heredarse.
Espacio de nombres: System.Runtime.InteropServices
Ensamblado: mscorlib (en mscorlib.dll)
Jerarquía de herencia
System.Object
System.Runtime.InteropServices.VariantWrapper
Sintaxis
[SerializableAttribute]
public sealed class VariantWrapper
[SerializableAttribute]
public ref class VariantWrapper sealed
[<Sealed>]
[<SerializableAttribute>]
type VariantWrapper = class end
<SerializableAttribute>
Public NotInheritable Class VariantWrapper
Constructores
Nombre | Descripción | |
---|---|---|
VariantWrapper(Object) | Inicializa una nueva instancia de la VariantWrapper clase especificado System.Object parámetro. |
Propiedades
Nombre | Descripción | |
---|---|---|
WrappedObject | Obtiene el objeto ajustado por el VariantWrapper objeto. |
Métodos
Nombre | Descripción | |
---|---|---|
Equals(Object) | Determina si el objeto especificado es igual al 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). |
|
ToString() | Devuelve una cadena que representa el objeto actual.(Heredado de Object). |
Comentarios
El propósito de VariantWrapper es agregar un nivel de direccionamiento indirecto al calcular referencias de un tipo administrado correspondiente VARIANT tipo.
Puede utilizar esta clase para encapsular un Object que el contador de referencias de interoperabilidad pasa como VT_VARIANT | VT_BYREF. En las versiones 1.0 y 1.1 de .NET Framework, no era posible calcular las referencias de datos variant de tipo VT_VARIANT | VT_BYREF a código no administrado. El contador de referencias interoperativo pasa 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 puede cambiarse durante una llamada al método. Por ejemplo, puede pasar un VT_VARIANT| VT_BYREF tipo variant que contiene un VT_BSTR y get devuelve un tipo variant que contiene un VT_I4 después de una llamada de método. Dado que el contador de referencias de interoperabilidad de COM no tiene ninguna manera de saber cuándo pasar VT_BSTR | VT_BYREF y cuándo pasar VT_VARIANT | VT_BYREF, que señala a una variante que contiene un BSTR para parámetros declaran como VARIANT *, puede indicar el contador de referencias mediante el uso de VariantWrapper.
Tenga en cuenta que no se admite el enlace anticipado; Puede usar VariantWrapper cuando se llama a InvokeMember o con una interfaz de solo envío denominada de forma dependiente temprana. En C#, también debe utilizar el ref (palabra clave) para especificar ByRef semántica para cualquier parámetro de tipo VariantWrapper. En Visual Basic, ByRef semántica se agrega automáticamente para cada llamada de enlace en tiempo de ejecución implícita. Tenga en cuenta también que el anidamiento VariantWrapper objetos y matrices de VariantWrapper objetos no se admite.
Ejemplos
En el ejemplo de código siguiente se muestra cómo utilizar el VariantWrapper clase para encapsular un Object que el contador de referencias 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)
Información de versión
Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Windows Phone
Disponible desde 8.1
Seguridad para subprocesos
Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.
Ver también
Espacio de nombres System.Runtime.InteropServices
Volver al principio