分享方式:


ICorDebugClass2::GetParameterizedType 方法

取得此類別的類型宣告。

語法

HRESULT GetParameterizedType (  
    [in] CorElementType                      elementType,  
    [in] ULONG32                             nTypeArgs,  
    [in, size_is(nTypeArgs)] ICorDebugType  *ppTypeArgs[],  
    [out] ICorDebugType                    **ppType  
);  

參數

elementType
[in]指定此類別之元素類型的 CorElementType 列舉值:如果此 ICorDebugClass2 代表實值型別,請將此值設定為 ELEMENT_TYPE_VALUETYPE。 如果此 ICorDebugClass2代表複雜類型,請將此值設定為 ELEMENT_TYPE_CLASS。

nTypeArgs
[in]如果為泛型型別,則為型別參數的數目。 型別參數 (若有的話) 的數目必須符合類別所需的數目。

ppTypeArgs
[in] 指標陣列,每個指標都指向代表型別參數的 ICorDebugType 物件。 如果類別為非泛型,則此值為 null。

ppType
[out] ICorDebugType 物件的位址指標,代表型別宣告。 這個物件相當於受控程式碼中的 Type 物件。

備註

如果是非泛型類別,也就是說,如果沒有型別參數,GetParameterizedType 只要取得對應至類別的執行階段類型物件。 elementType 參數應該設定為類別的正確元素類型:如果類別是實值型別,則為 ELEMENT_TYPE_VALUETYPE,否則為 ELEMENT_TYPE_CLASS。

如果類別接受型別參數 (例如 ArrayList<T>),您可使用 GetParameterizedType 來建構具現化型別的類型物件,例如 ArrayList<int>

背景資訊

在 .NET Framework 1.0 和 1.1 版中,中繼資料中的每個類型都可以直接對應到執行中的進程中的類型。 因此,中繼資料類型和執行階段類型在執行中處理序中具有單一表示法。 不過,中繼資料中的一個泛型型別可以對應至執行中處理序中類型的許多不同具現化。 例如,中繼資料類型 SortedList<K,V> 可對應至 SortedList<String, EmployeeRecord>SortedList<Int32, String>SortedList<String,Array<Int32>> 等等。 因此,您需要處理類型具現化的方法。

.NET Framework 2.0 版引進 ICorDebugType 介面。 對於泛型型別,ICorDebugClassICorDebugClass2 物件代表非具現化類型 (SortedList<K,V>),而 ICorDebugType 物件則代表各種具現化類型。 假設有 ICorDebugClassICorDebugClass2 物件,您可藉由呼叫 ICorDebugClass2::GetParameterizedType 方法來建立任何具現化的 ICorDebugType 物件。 您也可針對簡單類型(例如 Int32) 或非泛型型別,建立 ICorDebugType 物件。

引進物件 ICorDebugType,表示型別的執行階段概念在整個 API 中有漣波效果。 先前採用 ICorDebugClassICorDebugClass2 物件,或甚至是 CorElementType 值的函式會一般化為採用 ICorDebugType 物件。

規格需求

平台:請參閱系統需求

標頭:CorDebug.idl、CorDebug.h

程式庫:CorGuids.lib

.NET Framework版本:自 2.0 起提供