VariantWrapper Classe

Definição

Cuidado

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

Realiza marshaling de dados do tipo VT_VARIANT | VT_BYREF de código gerenciado para código não gerenciado. Essa classe não pode ser herdada.

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
Herança
VariantWrapper
Atributos

Exemplos

O exemplo de código a seguir demonstra como usar a VariantWrapper classe para encapsular um Object que o marshaler de interoperabilidade passa 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)

Comentários

A finalidade VariantWrapper é adicionar um nível de indireção ao fazer marshaling de um tipo gerenciado para o tipo correspondente VARIANT .

Você pode usar essa classe para encapsular um Object que o marshaler de interoperabilidade passa como VT_VARIANT | VT_BYREF. Nas versões 1.0 e 1.1 do .NET Framework, não foi possível empacotar dados variantes do tipo VT_VARIANT | VT_BYREF para código não gerenciado. O marshaler de interoperabilidade passou uma variante do tipo gerenciado (por exemplo, VT_BSTR | VT_BYREF para String, ou VT_I4 | VT_BYREF para Int32), mas não VT_VARIANT | VT_BYREF.

Uma vantagem de usar VT_VARIANT | VT_BYREF tipos variantes é que o tipo de dados pode ser alterado durante uma chamada de método. Por exemplo, você pode passar um VT_VARIANT | VT_BYREF tipo variante que contém um VT_BSTR e obter uma variante retornada que contém uma VT_I4 chamada após um método. Como o marshaler de interoperabilidade COM não tem como saber quando passar VT_BSTR | VT_BYREF e quando passar VT_VARIANT | VT_BYREF, o que aponta para uma variante que contém um BSTR para parâmetros declarados como VARIANT *, você pode instruir o marshaler usando VariantWrapper.

Observe que não há suporte para associação antecipada; você só pode usar VariantWrapper ao chamar InvokeMember ou com uma interface somente Dispatch chamada de forma vinculada antecipadamente. Em C#, você também deve usar a ref palavra-chave para especificar ByRef semântica para qualquer parâmetro do tipo VariantWrapper. Em Visual Basic, ByRef a semântica é adicionada automaticamente para cada chamada de associação tardia implícita. Observe também que não há suporte para aninhamento VariantWrapper de objetos e matrizes de VariantWrapper objetos.

Construtores

VariantWrapper(Object)

Inicializa uma nova instância da classe VariantWrapper do parâmetro Object especificado.

Propriedades

WrappedObject

Obtém o objeto encapsulado pelo objeto VariantWrapper.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a