共用方式為


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 介面。針對泛型型別,ICorDebugClassICorDebugClass2 物件表示未執行個體化的型別 (SortedList<K,V>),而 ICorDebugType 物件則表示各種執行個體化的型別。提供 ICorDebugClassICorDebugClass2 物件,讓您可藉由呼叫 ICorDebugClass2::GetParameterizedType 方法,為任何執行個體化建立 ICorDebugType 物件。您也可以針對簡單型別 (例如 Int32) 或非泛型型別建立 ICorDebugType 物件。

引入 ICorDebugType 物件來表示執行階段的型別概念,對於 API 會有一些連帶的影響。之前採用 ICorDebugClassICorDebugClass2 物件,或甚至採用 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

請參閱

參考

ICorDebugClass2