ICorDebugClass2::GetParameterizedType 方法
更新:2007 年 11 月
取得此類別的型別宣告。
HRESULT GetParameterizedType (
[in] CorElementType elementType,
[in] ULONG32 nTypeArgs,
[in, size_is(nTypeArgs)] ICorDebugType *ppTypeArgs[],
[out] ICorDebugType **ppType
);
參數
elementType
[in] CorElementType 列舉型別的值,指定此類別的項目型別。如果這個 ICorDebugClass2 表示實值型別 (Value Type),請將此值設為 ELEMENT_TYPE_VALUETYPE。如果此 ICorDebugClass2 表示複雜型別,則將此值設為 ELEMENT_TYPE_CLASS。nTypeArgs
[in] 如果這是泛型型別,則為型別參數的數目。型別參數的數目 (若有的話) 必須符合類別所需要的數目。ppTypeArgs
[in] 指標的陣列,每個指標各指向表示型別參數的 ICorDebugType 物件。如果類別為非泛型,此值為 null。ppType
[out] ICorDebugType 物件位址的指標,代表型別宣告。這個物件等於 Managed 程式碼中的 Type 物件。
備註
如果此類別為非泛型 (亦即沒有型別參數),則 GetParameterizedType 只會取得對應至此類別的執行階段型別物件。如果此類別為實值型別,則 elementType 參數應設為此類別的正確項目型別 ELEMENT_TYPE_VALUETYPE,否則為 ELEMENT_TYPE_CLASS。
如果此類別接受型別參數 (例如,ArrayList<T>),您就可以使用 GetParameterizedType 來建構執行個體化型別 (例如 ArrayList<int>) 的型別物件。
背景資訊
在 .NET Framework 1.0 版和 1.1 版中,中繼資料的每個型別應該直接對應到執行中處理序的型別。因此,中繼資料型別和執行階段型別在執行中處理序內會有單一表示。不過,中繼資料中的某個泛型型別,可以對應到執行中處理序型別的許多不同執行個體化 (Instantiation)。例如,中繼資料型別 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 物件。
需求
**平台:**請參閱 .NET Framework 系統需求。
**標頭:**CorDebug.idl
**程式庫:**CorGuids.lib
**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0