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

Объект, который нужно упаковать.

Возвращаемое значение

TWrapper

Недавно упакованный объект.

Атрибуты

Исключения

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.

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