导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Type.GetGenericArguments 方法

2013/12/13

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

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public virtual Type[] GetGenericArguments()

返回值

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

异常条件
NotSupportedException

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

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

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

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

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

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

下面的代码示例使用 GetGenericArguments 方法显示构造类型的类型变量及其泛型类型定义的类型参数。

该代码示例摘自为 IsGenericTypeDefinition 属性提供的更大的示例。请参见示例输出的示例。


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

   outputBlock.Text += String.Format("\tList type arguments ({0}):",
       typeArguments.Length) + "\n";

   foreach (Type tParam in typeArguments)
   {
      // If this is a type parameter, display its
      // position.
      //
      if (tParam.IsGenericParameter)
      {
         outputBlock.Text += String.Format("\t\t{0}\t(unassigned - parameter position {1})",
             tParam,
             tParam.GenericParameterPosition) + "\n";
      }
      else
      {
         outputBlock.Text += String.Format("\t\t{0}", tParam) + "\n";
      }
   }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft