Поделиться через


Type.GetGenericArguments Метод

Определение

Возвращает массив Type объектов, представляющих аргументы типа закрытого универсального типа или параметры типа определения универсального типа.

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

Исключения

Вызываемый метод не поддерживается в базовом классе. Производные классы должны предоставлять реализацию.

Примеры

В следующем примере кода метод используется GetGenericArguments для отображения аргументов типа созданного типа и параметров типа определения универсального типа.

Этот пример кода является частью более крупного примера, предоставленного для IsGenericTypeDefinition свойства. Пример выходных данных см. в более крупном примере.

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.
    let typeArguments = t.GetGenericArguments()

    printfn $"\tList type arguments ({typeArguments.Length}):"

    for tParam in typeArguments do
        // If this is a type parameter, display its
        // position.
        if tParam.IsGenericParameter then
            printfn $"\t\t{tParam}\t(unassigned - parameter position {tParam.GenericParameterPosition})"
        else
            printfn $"\t\t{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

Комментарии

Элементы массива возвращаются в порядке, в котором они отображаются в списке аргументов типа для универсального типа.

  • Если текущий тип является закрытым созданным типом (то есть свойство возвращаетfalse), массив, возвращаемый GetGenericArguments методом, ContainsGenericParameters содержит типы, назначенные параметрам универсального типа определения универсального типа.

  • Если текущий тип является определением универсального типа, массив содержит параметры типа.

  • Если текущий тип является открытым созданным типом (т ContainsGenericParameters . е. возвращается trueсвойство), в котором определенные типы не назначены всем параметрам типа и параметрам типа включающих универсальные типы или методы, массив содержит как типы, так и параметры типа. IsGenericParameter Используйте свойство, чтобы определить их друг от друга. Демонстрация этого сценария см. в примере кода для ContainsGenericParameters свойства.

Список инвариантных условий терминов, используемых в универсальном отражении, см. в IsGenericType примечаниях свойств.

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

См. также раздел