MethodInfo.GetGenericArguments Metoda

Definice

Vrátí pole Type objektů, které reprezentují argumenty typu Obecné metody nebo parametry typu definice obecné metody.Returns an array of Type objects that represent the type arguments of a generic method or the type parameters of a generic method definition.

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é reprezentují argumenty typu Obecné metody nebo parametry typu definice obecné metody.An array of Type objects that represent the type arguments of a generic method or the type parameters of a generic method definition. Vrátí prázdné pole, pokud aktuální metoda není obecná metoda.Returns an empty array if the current method is not a generic method.

Atributy

Výjimky

Tato metoda není podporována.This method is not supported.

Příklady

Následující příklad kódu ukazuje, jak získat argumenty typu Obecné metody a zobrazit je.The following code example shows how to get the type arguments of a generic method and display them.

Tento příklad je součástí většího příkladu, který je k dispozici pro MakeGenericMethod metodu.This example is part of a larger example provided for the MakeGenericMethod method.

// 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í, v jakém jsou uvedeny v seznamu parametrů typu pro obecnou metodu.The elements of the returned array are in the order in which they appear in the list of type parameters for the generic method.

  • Pokud je aktuální metodou uzavřenou vytvořenou metodou (to znamená, že se ContainsGenericParameters vrátí vlastnost false ), pole vrácené GetGenericArguments metodou obsahuje typy, které byly přiřazeny k parametrům obecného typu definice obecné metody.If the current method is a closed constructed method (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 method definition.

  • Pokud je aktuální metodou definice obecné metody, pole obsahuje parametry typu.If the current method is a generic method definition, the array contains the type parameters.

  • Pokud je aktuální metodou Open konstruovaný způsob (to znamená, že se ContainsGenericParameters vrátí vlastnost true ), ve které byly přiřazeny konkrétní typy k některým parametrům typu a parametry typu ohraničujících obecných typů byly přiřazeny jiným parametrům typu, pole obsahuje oba typy i parametry typu.If the current method is an open constructed method (that is, the ContainsGenericParameters property returns true) in which specific types have been assigned to some type parameters and type parameters of enclosing generic types have been assigned to other type parameters, the array contains both types and type parameters. Pomocí IsGenericParameter vlastnosti je můžete říct od sebe.Use the IsGenericParameter property to tell them apart. Ukázku tohoto scénáře naleznete v příkladu kódu pro ContainsGenericParameters vlastnost.For a demonstration of this scenario, see the code example for the ContainsGenericParameters property.

Seznam neutrálních podmínek pro podmínky specifické pro obecné metody naleznete v této IsGenericMethod Vlastnosti.For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. Seznam neutrálních podmínek pro jiné výrazy používané v obecné reflexi naleznete v této Type.IsGenericType Vlastnosti.For a list of the invariant conditions for other terms used in generic reflection, see the Type.IsGenericType property.

Platí pro

Viz také