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
для , или StringVT_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) |
Инициализирует новый экземпляр класса VariantWrapper для заданного параметра Object. |
Свойства
WrappedObject |
Возвращает объект, инкапсулированный с помощью объекта VariantWrapper. |
Методы
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |