Marshal.CreateWrapperOfType Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
CreateWrapperOfType(Object, Type) |
Устаревшие..
Инкапсулирует указанный COM-объект в объекте заданного типа. |
CreateWrapperOfType<T,TWrapper>(T) |
Инкапсулирует указанный COM-объект в объекте заданного типа. |
CreateWrapperOfType(Object, Type)
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- Marshal.NoCom.cs
Внимание!
CreateWrapperOfType(Object, Type) may be unavailable in future releases. Instead, use CreateWrapperOfType<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296519
Инкапсулирует указанный COM-объект в объекте заданного типа.
public:
static System::Object ^ CreateWrapperOfType(System::Object ^ o, Type ^ t);
[System.Obsolete("CreateWrapperOfType(Object, Type) may be unavailable in future releases. Instead, use CreateWrapperOfType<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296519")]
[System.Security.SecurityCritical]
public static object CreateWrapperOfType (object o, Type t);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object? CreateWrapperOfType (object? o, Type t);
[System.Security.SecurityCritical]
public static object CreateWrapperOfType (object o, Type t);
public static object CreateWrapperOfType (object o, Type t);
public static object? CreateWrapperOfType (object? o, Type t);
[<System.Obsolete("CreateWrapperOfType(Object, Type) may be unavailable in future releases. Instead, use CreateWrapperOfType<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296519")>]
[<System.Security.SecurityCritical>]
static member CreateWrapperOfType : obj * Type -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateWrapperOfType : obj * Type -> obj
[<System.Security.SecurityCritical>]
static member CreateWrapperOfType : obj * Type -> obj
static member CreateWrapperOfType : obj * Type -> obj
Public Shared Function CreateWrapperOfType (o As Object, t As Type) As Object
Параметры
- o
- Object
Объект, который следует упаковать.
- t
- Type
Тип создаваемой оболочки.
Возвращаемое значение
Новый инкапсулированный объект, являющийся экземпляром нужного типа.
- Атрибуты
Исключения
Параметр t
должен быть производным от __ComObject
.
-или-
t
— это тип среды выполнения Windows.
Параметр t
имеет значение null
.
Параметр o
нельзя преобразовать в результирующий тип, так как он не поддерживает все требуемые интерфейсы.
Комментарии
CreateWrapperOfType преобразует один тип класса COM, обычно базовый __ComObject
, в другой тип com-класса. Входной COM-объект, представленный параметром o
, является вызываемой оболочкой времени выполнения (RCW).
t
Параметры и o
должны быть классами, сигнатуры которых атрибутируются с помощью System.Runtime.InteropServices.ComImportAttribute. Средство Tlbimp.exe (средство импорта библиотек типов) применяет этот атрибут при импорте библиотеки типов. При создании RCW вручную в исходном коде этот атрибут следует применить к управляемой сигнатуре, представляющей исходный класс для обозначения его com-источников.
Tlbimp.exe импортирует com-класс в виде управляемого класса и интерфейса. Интерфейс coclass имеет то же имя, что и исходный класс, а управляемый класс имеет исходное имя сокласса с добавлением "Класс". Например, coclass с именем MyCoclass
становится интерфейсом coclass с именем MyCoclass
и управляемым классом с именем MyCoclassClass
. Так как t
должен быть классом, а не интерфейсом, обязательно укажите управляемый класс (MyCoclassClass
), а не интерфейс совместного класса.
Примечание
Удостоверение входного COM-объекта теряется, так как новый экземпляр RCW заключает в оболочку указатель IUnknown , предоставляемый исходным RCW.
См. также раздел
Применяется к
CreateWrapperOfType<T,TWrapper>(T)
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- Marshal.NoCom.cs
Инкапсулирует указанный COM-объект в объекте заданного типа.
public:
generic <typename T, typename TWrapper>
static TWrapper CreateWrapperOfType(T o);
[System.Security.SecurityCritical]
public static TWrapper CreateWrapperOfType<T,TWrapper> (T o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static TWrapper CreateWrapperOfType<T,TWrapper> (T? o);
public static TWrapper CreateWrapperOfType<T,TWrapper> (T o);
[<System.Security.SecurityCritical>]
static member CreateWrapperOfType : 'T -> 'Wrapper
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateWrapperOfType : 'T -> 'Wrapper
static member CreateWrapperOfType : 'T -> 'Wrapper
Public Shared Function CreateWrapperOfType(Of T, TWrapper) (o As T) As TWrapper
Параметры типа
- T
Тип пакуемого объекта.
- TWrapper
Тип возвращаемого объекта.
Параметры
- o
- T
Объект, который следует упаковать.
Возвращаемое значение
Только что Инкапсулированный объект.
- Атрибуты
Исключения
Параметр T
должен быть производным от __ComObject
.
-или-
T
— это тип среды выполнения Windows.
Параметр o
не может быть преобразован в TWrapper
, так как он не поддерживает все необходимые интерфейсы.
Комментарии
CreateWrapperOfType<T,TWrapper>(T) преобразует COM-объект типа T
в TWrapper
тип COM-класса. Входной COM-объект, представленный параметром o
, является вызываемой оболочкой времени выполнения (RCW).
И параметр универсального T
типа, и o
параметр должны быть классами, сигнатуры которых приписываются атрибутом System.Runtime.InteropServices.ComImportAttribute . Средство Tlbimp.exe (средство импорта библиотек типов) применяет этот атрибут при импорте библиотеки типов. При создании RCW вручную в исходном коде этот атрибут следует применить к управляемой сигнатуре, представляющей исходный класс для обозначения его com-источников.
Tlbimp.exe импортирует com-класс в виде управляемого класса и интерфейса. Интерфейс coclass имеет то же имя, что и исходный класс, а управляемый класс имеет исходное имя сокласса с добавлением "Класс". Например, coclass с именем MyCoclass
становится интерфейсом coclass с именем MyCoclass
и управляемым классом с именем MyCoclassClass
. Так какT
должен быть классом, а не интерфейсом, обязательно укажите управляемый класс (MyCoclassClass
), а не coclass
интерфейс .
Примечание
Удостоверение входного COM-объекта теряется, так как новый экземпляр RCW заключает в оболочку указатель IUnknown , предоставляемый исходным RCW.