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. В версиях 1.0 и 1.1 .NET Framework невозможно маршалировать данные варианта типа 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.

Обратите внимание, что ранняя привязка не поддерживается; можно использовать VariantWrapper только при вызове InvokeMember или с интерфейсом только для отправки, вызываемом в ранней привязке. В C#необходимо также использовать ключевое ref слово для указания ByRef семантики для любого параметра типа VariantWrapper. В Visual Basic ByRef семантики добавляются автоматически для каждого неявного вызова поздней привязки. Кроме того, обратите внимание, что вложенные VariantWrapper объекты и массивы VariantWrapper объектов не поддерживаются.

Конструкторы

Имя Описание
VariantWrapper(Object)
Устаревшие..

Инициализирует новый экземпляр класса для указанного VariantWrapperObject параметра.

Свойства

Имя Описание
WrappedObject
Устаревшие..

Возвращает объект, завернутый VariantWrapper объектом.

Методы

Имя Описание
Equals(Object)
Устаревшие..

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()
Устаревшие..

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()
Устаревшие..

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()
Устаревшие..

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()
Устаревшие..

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к