mscorlib 1.0.5000.0 2.0.0.0 4.0.0.0 System.Object

The purpose of is to add one level of indirection when marshaling a managed type to the corresponding VARIANT type.

You can use this class to wrap an that the interop marshaler passes as VT_VARIANT | VT_BYREF. In versions 1.0 and 1.1 of the .NET Framework, it was not possible to marshal variant data of type VT_VARIANT | VT_BYREF to unmanaged code. The interop marshaler passed a variant of the managed type (for example, VT_BSTR | VT_BYREF for , or VT_I4 | VT_BYREF for ), but not VT_VARIANT | VT_BYREF.

One advantage of using VT_VARIANT | VT_BYREF variant types is that the type of data can be changed during a method call. For example, you can pass a VT_VARIANT | VT_BYREF variant type that contains a VT_BSTR and get a variant returned that contains a VT_I4 after a method call. Because the COM interop marshaler has no way of knowing when to pass VT_BSTR | VT_BYREF and when to pass VT_VARIANT | VT_BYREF, which points to a variant that contains a BSTR for parameters declared as VARIANT *, you can instruct the marshaler by using .

Note that early binding is not supported; you can use only when calling or with a Dispatch-only interface called in an early bound fashion. In C#, you must also use the ref keyword to specify ByRef semantics for any parameter of type . In Visual Basic, ByRef semantics are added automatically for every implicit late binding call. Also note that nesting objects and arrays of objects is not supported.

Marshals data of type VT_VARIANT | VT_BYREF from managed to unmanaged code. This class cannot be inherited.

- Constructor
  1.0.5000.0
  2.0.0.0
  4.0.0.0
  To be added.

  Initializes a new instance of the class for the specified parameter.

  The object to marshal.
  2.0.0.0
- Property
  1.0.5000.0
  2.0.0.0
  4.0.0.0
  System.Object To be added. To be added.

  Gets the object wrapped by the object.

  2.0.0.0