Type.GetGenericArguments Type.GetGenericArguments Type.GetGenericArguments Type.GetGenericArguments Method

Определение

Возвращает массив объектов Type, которые представляют аргументы закрытого универсального типа или параметры определения универсального типа.Returns an array of Type objects that represent the type arguments of a closed generic type or the type parameters of a generic type definition.

public:
 virtual cli::array <Type ^> ^ GetGenericArguments();
public virtual Type[] GetGenericArguments ();
abstract member GetGenericArguments : unit -> Type[]
override this.GetGenericArguments : unit -> Type[]
Public Overridable Function GetGenericArguments () As Type()

Возвраты

Type[]

Массив объектов 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.

Исключения

Вызванный метод не поддерживается в базовом классе.The invoked method is not supported in the base class. Реализацию должны обеспечивать производные классы.Derived classes must provide an implementation.

Примеры

В следующем примере кода используется GetGenericArguments метод для отображения аргументы типа сконструированного типа и параметров типа определения универсального типа.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.

Данный пример кода является частью большего примера для IsGenericTypeDefinition свойство.This code example is part of a larger example provided for the IsGenericTypeDefinition property. См. в разделе большего примера для пример выходных данных.See the larger example for sample output.

if ( t->IsGenericType )
{
   
   // If this is a generic type, display the type arguments.
   //
   array<Type^>^typeArguments = t->GetGenericArguments();
   Console::WriteLine( L"\tList type arguments ({0}):",
      typeArguments->Length );
   System::Collections::IEnumerator^ myEnum =
      typeArguments->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Type^ tParam = safe_cast<Type^>(myEnum->Current);
      
      // If this is a type parameter, display its
      // position.
      //
      if ( tParam->IsGenericParameter )
      {
         Console::WriteLine(
            L"\t\t{0}\t(unassigned - parameter position {1})",
            tParam, tParam->GenericParameterPosition );
      }
      else
      {
         Console::WriteLine( L"\t\t{0}", tParam );
      }
   }
}
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);
        }
    }
}
If t.IsGenericType Then
    ' If this is a generic type, display the type arguments.
    '
    Dim typeArguments As Type() = t.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments (" _
        & typeArguments.Length & "):")
    
    For Each tParam As Type In typeArguments
        ' If this is a type parameter, display its position.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab & tParam.ToString() _
                & vbTab & "(unassigned - parameter position " _
                & tParam.GenericParameterPosition & ")")
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

Комментарии

Элементы массива возвращаются в порядке, в котором они отображаются в списке аргументов типа для универсального типа.The array elements are returned in the order in which they appear in the list of type arguments for the generic type.

  • Если текущий тип является закрытым сконструированным типом (то есть ContainsGenericParameters возвращает false), массив, возвращаемый GetGenericArguments метод содержит типы, которые были назначены параметрам универсального типа определения универсального типа .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.

  • Если текущий тип является открытым сконструированным типом (то есть ContainsGenericParameters возвращает true) в определенные типы не были назначены все параметры типа и параметры типа заключающих универсальным типам или методам, массив содержит типы и параметры типа.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. Используйте IsGenericParameter свойство, чтобы отличить друг от друга.Use the IsGenericParameter property to tell them apart. Для демонстрации этого сценария, см. в разделе пример кода для ContainsGenericParameters свойство.For a demonstration of this scenario, see the code example for the ContainsGenericParameters property.

Список неизменяемых условий для терминов, используемых в отражении универсальных типов, см. в примечаниях к описанию свойства IsGenericType.For a list of the invariant conditions for terms used in generic reflection, see the IsGenericType property remarks.

Применяется к

Дополнительно