MethodInfo.GetGenericArguments Metoda

Definice

Vrátí pole objektů, které představují argumenty typu obecné metody nebo parametry typu Type 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 objektů, které představují argumenty typu obecné metody nebo parametry typu Type definice obecné metody. Vrátí prázdné pole, pokud aktuální metoda není obecná metoda.

Atributy

Výjimky

Tato metoda se nepodporuje.

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 pro MakeGenericMethod metodu .

// If this is a generic method, display its type arguments.
//
if (mi->IsGenericMethod)
{
    array<Type^>^ typeArguments = mi->GetGenericArguments();

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

    for each (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)
{
    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 jsou uvedeny v seznamu parametrů typu pro obecnou metodu.

  • Pokud je aktuální metoda uzavřená konstruovaná metoda (to znamená, že vlastnost vrací ), pole vrácené metodou obsahuje typy, které byly přiřazeny parametrům obecného typu definice obecné ContainsGenericParameters false GetGenericArguments metody.

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

  • Pokud je aktuální metoda otevřená konstruovaná metoda (to znamená, že vlastnost vrací ), ve které byly určité typy přiřazeny k některým parametrům typu a parametry typu nadřazených obecných typů byly přiřazeny jiným parametrům typu, pole obsahuje parametry typů i ContainsGenericParameters true typů. Pomocí vlastnosti IsGenericParameter je odlište. Ukázku tohoto scénáře najdete v příkladu kódu pro ContainsGenericParameters vlastnost .

Seznam invariantní podmínek pro termíny specifické pro obecné metody najdete ve IsGenericMethod vlastnosti . Seznam invariantní podmínek pro jiné termíny používané v obecné reflexi najdete v vlastnosti Type.IsGenericType .

Platí pro

Viz také