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

Poniższy przykład kodu pokazuje, jak uzyskać argumenty typu metody ogólnej i wyświetlić je.

Ten przykład jest częścią większego przykładu udostępnionego 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ą konstruowaną (czyli ContainsGenericParameters zwracana jest właściwość false), tablica zwrócona przez GetGenericArguments metodę zawiera typy, które zostały 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ą metodą konstruowaną (czyli ContainsGenericParameters zwraca właściwość 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ż