MethodInfo.GetGenericArguments Método

Definição

Retorna uma matriz de objetos Type que representam os argumentos de tipo de um método genérico ou os parâmetros de tipo de uma definição de método genérico.

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

Retornos

Type[]

Uma matriz de objetos Type que representam os argumentos de tipo de um método genérico ou os parâmetros de tipo de uma definição de método genérico. Retornará uma matriz vazia se o método atual não for um método genérico.

Atributos

Exceções

Não há suporte para o método.

Exemplos

O exemplo de código a seguir mostra como obter os argumentos de tipo de um método genérico e exibi-los.

Este exemplo faz parte de um exemplo maior fornecido para o MakeGenericMethod método.

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

Comentários

Os elementos da matriz retornada estão na ordem em que aparecem na lista de parâmetros de tipo para o método genérico.

  • Se o método atual for um método construído fechado (ou seja, a ContainsGenericParameters Propriedade retornar false ), a matriz retornada pelo GetGenericArguments método conterá os tipos que foram atribuídos aos parâmetros de tipo genérico da definição do método genérico.

  • Se o método atual for uma definição de método genérico, a matriz conterá os parâmetros de tipo.

  • Se o método atual for um método construído aberto (ou seja, a ContainsGenericParameters propriedade retorna true ) na qual os tipos específicos foram atribuídos a alguns parâmetros de tipo e os parâmetros de tipo dos tipos genéricos delimitadores foram atribuídos a outros parâmetros de tipo, a matriz conterá os tipos e os parâmetros de tipo. Use a IsGenericParameter propriedade para diferenciá-las. Para ver uma demonstração desse cenário, consulte o exemplo de código para a ContainsGenericParameters propriedade.

Para obter uma lista das condições invariáveis para termos específicos para métodos genéricos, consulte a IsGenericMethod propriedade. Para obter uma lista das condições invariáveis para outros termos usados em reflexão genérica, consulte a Type.IsGenericType propriedade.

Aplica-se a

Confira também