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 VariantWrapperpublic 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 = classtype VariantWrapper = class[<System.Serializable>]
type VariantWrapper = classPublic 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) |