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
。
備註
當發出的程式碼需要從目前的泛型型別定義所建立的型別時,請使用這個方法。 CreateType MakeGenericType 在 TypeBuilder 代表泛型型別定義的上呼叫方法之前,不需要呼叫方法。 如果目前的不 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)