VariantWrapper 类

定义

注意

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

VT_VARIANT | VT_BYREF 类型的数据从托管代码封送到非托管代码。 此类不能被继承。

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
继承
VariantWrapper
属性

示例

下面的代码示例演示如何使用 VariantWrapper 类包装 Object 互操作封送处理器作为 传递 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)

注解

的目的是 VariantWrapper 在将托管类型封送给相应 VARIANT 类型时添加一级间接处理。

可以使用此类包装 Object 互操作封送处理程序作为 传递 VT_VARIANT | VT_BYREF的 。 在 .NET Framework 1.0 和 1.1 版中,无法将类型的 VT_VARIANT | VT_BYREF 变体数据封送给非托管代码。 互操作封送处理器传递了托管类型的变体 (例如 VT_BSTR | VT_BYREFString, 或 VT_I4 | VT_BYREF) Int32 ,但不是 VT_VARIANT | VT_BYREF

使用 VT_VARIANT | VT_BYREF 变体类型的一个优点是在方法调用期间可以更改数据类型。 例如,可以传递包含 VT_VARIANT | VT_BYREFVT_BSTR 的变体类型,并在方法调用后返回包含 的 VT_I4 变体。 由于 COM 互操作封送处理器无法知道何时传递和何时传递 VT_BSTR | VT_BYREFVT_VARIANT | VT_BYREF,这指向包含 BSTR 声明为 VARIANT *的参数的 变体,因此可以使用 指示封送处理器 VariantWrapper

请注意,不支持早期绑定;仅当调用 InvokeMember 或 时,才能使用 VariantWrapper 以早期绑定方式调用 的仅调度接口。 在 C# 中,还必须使用 ref 关键字为 类型VariantWrapper的任何参数指定ByRef语义。 在 Visual Basic 中, ByRef 每次隐式后期绑定调用都会自动添加语义。 另请注意,不支持嵌套 VariantWrapper 对象和对象的数组 VariantWrapper

构造函数

VariantWrapper(Object)
已过时.

使用指定的 Object 参数初始化 VariantWrapper 类的新实例。

属性

WrappedObject
已过时.

获取由 VariantWrapper 对象包装的对象。

方法

Equals(Object)
已过时.

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()
已过时.

作为默认哈希函数。

(继承自 Object)
GetType()
已过时.

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()
已过时.

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()
已过时.

返回表示当前对象的字符串。

(继承自 Object)

适用于