TypeBuilder.MakeGenericType(Type[]) 方法

定义

将类型数组中的元素替换为当前泛型类型定义的类型参数,并返回生成的构造类型。

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

typeArgumentsnull

typeArguments 的任意元素为 null

typeArguments 的任意元素的属性 Module 的值为 null

- 或 -

typeArguments 的任意元素的模块的属性 Assembly 的值为 null

注解

如果发出的代码需要根据当前泛型类型定义构造的类型,请使用此方法。 在对表示泛型类型定义的 调用 方法之前,无需 CreateType 调用 MakeGenericType 方法 TypeBuilder 。 如果当前 TypeBuilder 不表示泛型类型的定义, InvalidOperationException 则会引发 。

此方法返回的对象在发出的代码中充当构造泛型类型的占位符。 它是派生自 Type 的类的实例,其功能有限。 具体而言:

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)

适用于