Condividi tramite


MethodInfo.GetGenericArguments Metodo

Definizione

Restituisce una matrice di oggetti Type che rappresentano gli argomenti tipo di un metodo generico o i parametri di tipo della definizione di un metodo generico.

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

Restituisce

Type[]

Matrice di oggetti Type che rappresentano gli argomenti di tipo di un metodo generico o i parametri di tipo della definizione di un metodo generica. Restituisce una matrice vuota se il metodo corrente non è un metodo generico.

Attributi

Eccezioni

Questo metodo non è supportato.

Esempio

Nell'esempio di codice seguente viene illustrato come ottenere gli argomenti di tipo di un metodo generico e visualizzarli.

Questo esempio fa parte di un esempio più ampio fornito per il MakeGenericMethod metodo .

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

Commenti

Gli elementi della matrice restituita sono nell'ordine in cui vengono visualizzati nell'elenco dei parametri di tipo per il metodo generico.

  • Se il metodo corrente è un metodo costruito chiuso , ovvero la ContainsGenericParameters proprietà restituisce false, la matrice restituita dal GetGenericArguments metodo contiene i tipi assegnati ai parametri di tipo generico della definizione del metodo generico.

  • Se il metodo corrente è una definizione di metodo generico, la matrice contiene i parametri di tipo.

  • Se il metodo corrente è un metodo costruito aperto (ovvero la ContainsGenericParameters proprietà restituisce true) in cui sono stati assegnati tipi specifici ad alcuni parametri di tipo e parametri di tipo di tipi di tipi generici di inclusione sono stati assegnati ad altri parametri di tipo, la matrice contiene sia tipi che parametri di tipo. Utilizzare la IsGenericParameter proprietà per distinguerle. Per una dimostrazione di questo scenario, vedere l'esempio di codice per la ContainsGenericParameters proprietà .

Per un elenco delle condizioni invarianti per i termini specifici dei metodi generici, vedere la IsGenericMethod proprietà . Per un elenco delle condizioni invarianti per altri termini usati nella reflection generica, vedere la Type.IsGenericType proprietà .

Si applica a

Vedi anche