System.Type.GetGenericArguments 方法

方法描述

返回表示泛型类型的类型实参或泛型类型定义的类型形参的 Type 对象的数组。

语法定义(C# System.Type.GetGenericArguments 方法 的用法)

public virtual Type[] GetGenericArguments()

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
返回值 System.Type[] 表示泛型类型的类型实参的 Type 对象的数组。 如果当前类型不是泛型类型,则返回一个空数组。

提示和注释

数组元素按照它们出现在泛型类型的类型实参列表中的顺序返回。

如果当前类型是封闭构造类型(即 ContainsGenericParameters 属性返回 false),则 GetGenericArguments 方法返回的数组将包含已赋予泛型类型定义的泛型类型形参的类型。

如果当前类型是泛型类型定义,该数组将包含类型形参。

如果当前类型为开放构造类型(即 ContainsGenericParameters 属性返回 true),也就是说特定类型尚未分配给所有类型参数和封闭泛型类型或方法的类型参数,则数组同时包含类型和类型参数。 使用 IsGenericParameter 属性来区分它们。 有关这种情况的演示,请参见 ContainsGenericParameters 属性的代码示例。

有关泛型反射中使用的术语的固定条件列表,请参见 IsGenericType 属性备注。

System.Type.GetGenericArguments 方法例子

有关示例输出,请参见更大的示例。

if (t.IsGenericType)
{
    // If this is a generic type, display the type arguments.
    //
    Type[] typeArguments = t.GetGenericArguments();

    Console.WriteLine("\tList type arguments ({0}):", 
        typeArguments.Length);

    foreach (Type tParam in typeArguments)
    {
        // If this is a type parameter, display its
        // position.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}\t(unassigned - parameter position {1})",
                tParam,
                tParam.GenericParameterPosition);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}

异常

异常 异常描述
NotSupportedException 基类不支持所调用的方法。 派生类必须提供实现。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.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 系统要求。