VariantWrapper 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注意
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_BYREF
String, 或 VT_I4 | VT_BYREF
) Int32 ,但不是 VT_VARIANT | VT_BYREF
。
使用 VT_VARIANT | VT_BYREF
变体类型的一个优点是在方法调用期间可以更改数据类型。 例如,可以传递包含 VT_VARIANT | VT_BYREF
VT_BSTR
的变体类型,并在方法调用后返回包含 的 VT_I4
变体。 由于 COM 互操作封送处理器无法知道何时传递和何时传递 VT_BSTR | VT_BYREF
VT_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) |