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
介面。 對於泛型型別,ICorDebugClass
或 ICorDebugClass2
物件代表非具現化類型 (SortedList<K,V>
),而 ICorDebugType
物件則代表各種具現化類型。 假設有 ICorDebugClass
或 ICorDebugClass2
物件,您可藉由呼叫 ICorDebugClass2::GetParameterizedType
方法來建立任何具現化的 ICorDebugType
物件。 您也可針對簡單類型(例如 Int32) 或非泛型型別,建立 ICorDebugType
物件。
引進物件 ICorDebugType
,表示型別的執行階段概念在整個 API 中有漣波效果。 先前採用 ICorDebugClass
或 ICorDebugClass2
物件,或甚至是 CorElementType
值的函式會一般化為採用 ICorDebugType
物件。
規格需求
平台:請參閱系統需求。
標頭:CorDebug.idl、CorDebug.h
程式庫:CorGuids.lib
.NET Framework版本:自 2.0 起提供
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: