Marshal.CreateWrapperOfType 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
CreateWrapperOfType(Object, Type) |
已淘汰.
將指定 COM 物件包裝在指定類型的物件中。 |
CreateWrapperOfType<T,TWrapper>(T) |
將指定 COM 物件包裝在指定類型的物件中。 |
CreateWrapperOfType(Object, Type)
警告
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
參數為 null
。
o
無法轉換為目的端類型,因為不支援所需的所有介面。
備註
CreateWrapperOfType 會將一個 COM 類別類型,通常是基底 __ComObject
類型轉換為另一個 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
必須是類別,而非介面,因此請務必 () MyCoclassClass
指定 Managed 類別,而不是 coclass 介面。
注意
因為新的 RCW 實例會包裝原始 RCW 所公開的 IUnknown 指標,所以您遺失輸入 COM 物件的身分識別。
另請參閱
適用於
CreateWrapperOfType<T,TWrapper>(T)
將指定 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
要包裝的物件。
傳回
新包裝的物件。
- 屬性
例外狀況
因為不支援所有必要的介面,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
必須是類別,而不是介面,所以請務必 () MyCoclassClass
指定 Managed 類別,而不是 coclass
介面。
注意
因為新的 RCW 實例會包裝原始 RCW 所公開的 IUnknown 指標,所以您會遺失輸入 COM 物件的身分識別。