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 類別類型。 參數 所 o 代表的輸入 COM 物件是 執行時間可呼叫包裝函式 (RCW)

to 參數都必須是具有 屬性 System.Runtime.InteropServices.ComImportAttribute 之簽章的類別。 Tlbimp.exe (型別程式庫匯入工具) 工具會在匯入型別程式庫時為您套用此屬性。 如果您在原始程式碼中手動建立 RCW,您應該將此屬性套用至代表原始 coclass 的 Managed 簽章,以表示其 COM 來源。

Tlbimp.exe 將 COM coclass 匯入為 Managed 類別和介面。 coclass 介面的名稱與原始 coclass 相同,而 Managed 類別具有附加 「Class」 的原始 coclass 名稱。 例如,名為 MyCoclass 的 coclass 會變成名為 MyCoclass 的 coclass 介面,以及名為 的 MyCoclassClass Managed 類別。 由於 t 必須是類別,而非介面,因此請務必指定 managed 類別 () MyCoclassClass 而非 coclass 介面。

注意

因為新的 RCW 實例會包裝原始 RCW 公開的 IUnknown 指標,所以您會失去輸入 COM 物件的身分識別。

另請參閱

適用於

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

要包裝的物件。

傳回

TWrapper

新包裝的物件。

屬性

例外狀況

T 必須衍生自 __ComObject

-或-

T是Windows 執行階段類型。

因為不支援所有必要的介面,o 不能轉換為 TWrapper

備註

CreateWrapperOfType<T,TWrapper>(T) 將 類型的 T COM 物件轉換為 TWrapper COM 類別類型。 參數 所 o 代表的輸入 COM 物件是 執行時間可呼叫包裝函式 (RCW)

T泛型型別參數和 o 參數都必須是具有 屬性屬性之簽章 System.Runtime.InteropServices.ComImportAttribute 的類別。 Tlbimp.exe (型別程式庫匯入工具) 工具會在匯入型別程式庫時為您套用此屬性。 如果您在原始程式碼中手動建立 RCW,您應該將此屬性套用至代表原始 coclass 的 Managed 簽章,以表示其 COM 來源。

Tlbimp.exe 將 COM coclass 匯入為 Managed 類別和介面。 coclass 介面的名稱與原始 coclass 相同,而 Managed 類別具有附加 「Class」 的原始 coclass 名稱。 例如,名為 MyCoclass 的 coclass 會變成名為 MyCoclass 的 coclass 介面,以及名為 的 MyCoclassClass Managed 類別。 由於 T 必須是類別,而非介面,因此請務必指定 managed 類別 (MyCoclassClass) 而非 coclass 介面。

注意

您遺失輸入 COM 物件的身分識別,因為新的 RCW 實例會包裝原始 RCW 公開的 IUnknown 指標。

適用於