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)