System.Type.GetGenericTypeDefinition 方法
方法描述
返回一个表示可用于构造当前泛型类型的泛型类型定义的 Type 对象。
语法定义(C# System.Type.GetGenericTypeDefinition 方法 的用法)
public virtual Type GetGenericTypeDefinition()
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
返回值 | System.Type | 表示可用于构造当前类型的泛型类型的 Type 对象。 |
提示和注释
泛型类型定义是可用于构造其他类型的模板。 例如,可使用泛型类型定义 G
如果使用相同的类型实参从相同的泛型类型定义创建两个构造类型,GetGenericTypeDefinition 方法对两个类型都返回相同的 Type 对象。
如果调用已经表示泛型类型定义的 Type 对象的 GetGenericTypeDefinition 方法,它将返回当前的 Type。
重要事项
泛型类型的数组本身不是泛型。 在 C# 代码 A
有关泛型反射中使用的术语的固定条件列表,请参见 IsGenericType 属性备注。
System.Type.GetGenericTypeDefinition 方法例子
此示例使用泛型 Dictionary
using System; using System.Reflection; using System.Collections.Generic; public class Test { public static void Main() { Console.WriteLine("\r\n--- Get the generic type that defines a constructed type."); // Create a Dictionary of Test objects, using strings for the // keys. Dictionaryd = new Dictionary (); // Get a Type object representing the constructed type. // Type constructed = d.GetType(); DisplayTypeInfo(constructed); Type generic = constructed.GetGenericTypeDefinition(); DisplayTypeInfo(generic); } private static void DisplayTypeInfo(Type t) { Console.WriteLine("\r\n{0}", t); Console.WriteLine("\tIs this a generic type definition? {0}", t.IsGenericTypeDefinition); Console.WriteLine("\tIs it a generic type? {0}", t.IsGenericType); Type[] typeArguments = t.GetGenericArguments(); Console.WriteLine("\tList type arguments ({0}):", typeArguments.Length); foreach (Type tParam in typeArguments) { Console.WriteLine("\t\t{0}", tParam); } } } /* This example produces the following output: --- Get the generic type that defines a constructed type. System.Collections.Generic.Dictionary`2[System.String,Test] Is this a generic type definition? False Is it a generic type? True List type arguments (2): System.String Test System.Collections.Generic.Dictionary`2[TKey,TValue] Is this a generic type definition? True Is it a generic type? True List type arguments (2): TKey TValue */
异常
异常 | 异常描述 |
---|---|
InvalidOperationException | 当前对象不是泛型类型。 即 IsGenericType 返回 false。 |
NotSupportedException | 基类不支持所调用的方法。 派生类必须提供实现。 |
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。