Marshal.CreateWrapperOfType Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| CreateWrapperOfType(Object, Type) |
Устаревшие.
Упаковывает указанный COM-объект в объект указанного типа. |
| CreateWrapperOfType<T,TWrapper>(T) |
Упаковывает указанный COM-объект в объект указанного типа. |
CreateWrapperOfType(Object, Type)
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- 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).
И параметры to должны быть классами, сигнатурами которых являются атрибуты System.Runtime.InteropServices.ComImportAttribute. Средство Tlbimp.exe (импорт библиотеки типов) применяет этот атрибут для вас при импорте библиотеки типов. При создании RCW вручную в исходном коде этот атрибут следует применить к управляемой сигнатуре, представляющей исходный coclass для обозначения его источников COM.
Tlbimp.exe импортирует com-класс в качестве управляемого класса и интерфейса. Интерфейс сокласса имеет то же имя, что и исходный coclass, а управляемый класс имеет исходное имя сокласса, добавленное с "Class". Например, кокласс становится интерфейсом сокласса MyCoclass , который называется MyCoclassMyCoclassClass, и управляемым классом. Так как t должен быть классом, а не интерфейсом, обязательно укажите управляемый класс (MyCoclassClass) и не интерфейс сокласса.
Note
Вы теряете удостоверение входного COM-объекта, так как новый экземпляр RCW упаковывает указатель IUnknown , предоставляемый исходным RCW.
См. также раздел
Применяется к
CreateWrapperOfType<T,TWrapper>(T)
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- Marshal.NoCom.cs
- Исходный код:
- 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 вручную в исходном коде этот атрибут следует применить к управляемой сигнатуре, представляющей исходный coclass для обозначения его источников COM.
Tlbimp.exe импортирует com-класс в качестве управляемого класса и интерфейса. Интерфейс сокласса имеет то же имя, что и исходный coclass, а управляемый класс имеет исходное имя сокласса, добавленное с "Class". Например, кокласс становится интерфейсом сокласса MyCoclass , который называется MyCoclassMyCoclassClass, и управляемым классом. Так какT должен быть класс, а не интерфейс, обязательно укажите управляемый класс (MyCoclassClass) и не coclass интерфейс.
Note
Вы теряете удостоверение входного COM-объекта, так как новый экземпляр RCW упаковывает указатель IUnknown , предоставляемый исходным RCW.