Sdílet prostřednictvím


MethodInfo.GetGenericArguments Metoda

Definice

Vrátí pole Type objektů, které představují argumenty typu obecné metody nebo parametry typu definice obecné metody.

public:
 override cli::array <Type ^> ^ GetGenericArguments();
public override Type[] GetGenericArguments();
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments();
override this.GetGenericArguments : unit -> Type[]
[<System.Runtime.InteropServices.ComVisible(true)>]
override this.GetGenericArguments : unit -> Type[]
Public Overrides Function GetGenericArguments () As Type()

Návraty

Type[]

Pole Type objektů, které představují argumenty typu obecné metody nebo parametry typu definice obecné metody. Vrátí prázdnou matici, pokud aktuální metoda není obecnou metodou.

Atributy

Výjimky

Tato metoda není podporována.

Příklady

Následující příklad kódu ukazuje, jak získat argumenty typu obecné metody a zobrazit je.

Tento příklad je součástí většího příkladu poskytnutého pro metodu MakeGenericMethod .

// If this is a generic method, display its type arguments.
//
if (mi.IsGenericMethod)
{
    Type[] typeArguments = mi.GetGenericArguments();

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

    foreach (Type tParam in typeArguments)
    {
        // IsGenericParameter is true only for generic type
        // parameters.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}  parameter position {1}" +
                "\n\t\t   declaring method: {2}",
                tParam,
                tParam.GenericParameterPosition,
                tParam.DeclaringMethod);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}
' If this is a generic method, display its type arguments.
'
If mi.IsGenericMethod Then
    Dim typeArguments As Type() = mi.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments ({0}):", _
        typeArguments.Length)
    
    For Each tParam As Type In typeArguments
        ' IsGenericParameter is true only for generic type
        ' parameters.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab _
                & "{0}  parameter position: {1}" _
                & vbCrLf & vbTab & vbTab _
                & "   declaring method: {2}", _
                tParam,  _
                tParam.GenericParameterPosition, _
                tParam.DeclaringMethod)
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

Poznámky

Prvky vráceného pole jsou v pořadí, ve kterém se zobrazí v seznamu parametrů typu pro obecnou metodu.

  • Pokud je aktuální metoda uzavřená konstruovaná metoda (tj. ContainsGenericParameters vlastnost vrátí false), matice vrácená metodou GetGenericArguments obsahuje typy, které byly přiřazeny k parametrům obecného typu definice obecné metody.

  • Pokud je aktuální metoda definice obecné metody, pole obsahuje parametry typu.

  • Je-li aktuální metoda otevřená konstruovaná metoda (to znamená, že ContainsGenericParameters vlastnost vrátí true) ve kterých byly určité typy přiřazeny k některým parametrům typu a parametry typu ohraničující obecné typy byly přiřazeny k jiným parametrům typu, pole obsahuje oba typy a parametry typu. IsGenericParameter Pomocí vlastnosti je oddělte. Ukázku tohoto scénáře najdete v příkladu ContainsGenericParameters kódu pro vlastnost.

Seznam invariantních podmínek pro podmínky specifické pro obecné metody naleznete ve IsGenericMethod vlastnosti. Seznam invariantních podmínek pro jiné termíny použité v obecné reflexi naleznete vlastnost Type.IsGenericType .

Platí pro

Viz také