TypeBuilder.MakeGenericType(Type[]) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
用類型陣列的項目取代目前泛型類型定義的類型參數,並傳回產生的建構類型。
public:
override Type ^ MakeGenericType(... cli::array <Type ^> ^ typeArguments);
public override Type MakeGenericType (params Type[] typeArguments);
override this.MakeGenericType : Type[] -> Type
Public Overrides Function MakeGenericType (ParamArray typeArguments As Type()) As Type
參數
- typeArguments
- Type[]
由類型組成的陣列,用來取代目前泛型類型定義的類型參數。
傳回
Type,表示用 typeArguments
的項目取代目前泛型類型之類型參數所得到的建構類型。
例外狀況
目前類型不代表泛型類型的定義。 亦即, IsGenericTypeDefinition 傳回 false
。
備註
當您發出的程式代碼需要從目前的泛型型別定義建構的類型時,請使用這個方法。 在代表泛型型別定義的 上TypeBuilder呼叫 方法之前,不需要先呼叫 CreateTypeMakeGenericType 方法。 如果目前的 TypeBuilder 不代表泛型型別的定義, InvalidOperationException 則會擲回 。
這個方法所傳回的物件會作為所發出程式代碼中已建構泛型類型的佔位元。 它是衍生自 Type 且功能有限之類別的實例。 尤其是:
若要取得這些建構泛型型別的方法、欄位和建構函式,請使用 GetMethod(Type, MethodInfo)、 GetField(Type, FieldInfo)和 GetConstructor(Type, ConstructorInfo) 方法多載。
兩個表示相同建構類型的實例不會比較為相等。 例如,在下列程式代碼
t1.Equals(t2)
中會傳false
回 :
Type^ t1 = tbldr->MakeGenericType(String::typeid);
Type^ t2 = tbldr->MakeGenericType(String::typeid);
bool result = t1->Equals(t2);
Type t1 = tbldr.MakeGenericType(typeof(string));
Type t2 = tbldr.MakeGenericType(typeof(string));
bool result = t1.Equals(t2);
Dim t1 As Type = tbldr.MakeGenericType(GetType(String))
Dim t2 As Type = tbldr.MakeGenericType(GetType(String))
Dim result As Boolean = t1.Equals(t2)