Type.GetGenericArguments Method

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Returns an array of Type objects that represent the type arguments of a generic type or the type parameters of a generic type definition.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Overridable Function GetGenericArguments As Type()
public virtual Type[] GetGenericArguments()

Return Value

Type: array<System.Type[]
An array of Type objects that represent the type arguments of a generic type. Returns an empty array if the current type is not a generic type.

Exceptions

Exception Condition
NotSupportedException

The invoked method is not supported in the base class. Derived classes must provide an implementation.

Remarks

The array elements are returned in the order in which they appear in the list of type arguments for the generic type.

  • If the current type is a closed constructed type (that is, the ContainsGenericParameters property returns false), the array returned by the GetGenericArguments method contains the types that have been assigned to the generic type parameters of the generic type definition.

  • If the current type is a generic type definition, the array contains the type parameters.

  • If the current type is an open constructed type (that is, the ContainsGenericParameters property returns true) in which specific types have not been assigned to all of the type parameters and type parameters of enclosing generic types or methods, the array contains both types and type parameters. Use the IsGenericParameter property to tell them apart. For a demonstration of this scenario, see the code example for the ContainsGenericParameters property.

For a list of the invariant conditions for terms used in generic reflection, see the IsGenericType property remarks.

Examples

The following code example uses the GetGenericArguments method to display the type arguments of a constructed type and the type parameters of its generic type definition.

This code example is part of a larger example provided for the IsGenericTypeDefinition property. See that example for sample output.

If t.IsGenericType Then
   ' If this is a generic type, display the type arguments.
   '
   Dim typeArguments As Type() = t.GetGenericArguments()

   outputBlock.Text &= vbTab & "List type arguments (" _
       & typeArguments.Length & "):" & vbCrLf

   For Each tParam As Type In typeArguments
      ' If this is a type parameter, display its position.
      '
      If tParam.IsGenericParameter Then
         outputBlock.Text &= vbTab & vbTab & tParam.ToString() _
             & vbTab & "(unassigned - parameter position " _
             & tParam.GenericParameterPosition & ")"
      Else
         outputBlock.Text &= vbTab & vbTab & tParam.ToString() & vbCrLf
      End If
   Next tParam
End If
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";
      }
   }
}

Version Information

Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.