Udostępnij za pośrednictwem


MethodInfo.GetGenericArguments Metoda

Definicja

Zwraca tablicę Type obiektów reprezentujących argumenty typu metody ogólnej lub parametry typu definicji metody ogólnej.

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()

Zwraca

Type[]

Tablica Type obiektów reprezentujących argumenty typu metody ogólnej lub parametrów typu definicji metody ogólnej. Zwraca pustą tablicę, jeśli bieżąca metoda nie jest metodą ogólną.

Atrybuty

Wyjątki

Ta metoda nie jest obsługiwana.

Przykłady

W poniższym przykładzie kodu pokazano, jak uzyskać argumenty typu metody ogólnej i wyświetlić je.

Ten przykład jest częścią większego przykładu podanego MakeGenericMethod dla metody .

// 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

Uwagi

Elementy zwracanej tablicy są w kolejności, w której są wyświetlane na liście parametrów typu dla metody ogólnej.

  • Jeśli bieżąca metoda jest zamkniętą metodą skonstruowaną (czyli ContainsGenericParameters właściwość zwraca false), tablica zwrócona przez GetGenericArguments metodę zawiera typy przypisane do parametrów typu ogólnego definicji metody ogólnej.

  • Jeśli bieżąca metoda jest definicją metody ogólnej, tablica zawiera parametry typu.

  • Jeśli bieżąca metoda jest otwartą skonstruowaną metodą (czyli ContainsGenericParameters właściwości zwraca true) w której określone typy zostały przypisane do niektórych parametrów typu i parametrów typu otaczającego typy ogólne zostały przypisane do innych parametrów typu, tablica zawiera zarówno typy, jak i parametry typu. IsGenericParameter Użyj właściwości , aby je odróżnić. Aby zapoznać się z pokazem tego scenariusza, zobacz przykładowy kod dla ContainsGenericParameters właściwości.

Aby uzyskać listę niezmiennych warunków dotyczących warunków specyficznych dla metod ogólnych, zobacz IsGenericMethod właściwość . Aby uzyskać listę niezmiennych warunków dla innych terminów używanych w odbiciu ogólnym, zobacz Type.IsGenericType właściwość .

Dotyczy

Zobacz też