Ler em inglês

Compartilhar via


Type.GetGenericArguments Método

Definição

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

C#
public virtual Type[] GetGenericArguments ();

Retornos

Type[]

Uma matriz de objetos Type que representam os argumentos de tipo de um tipo genérico. Retorna uma matriz vazia se o tipo atual não é um tipo genérico.

Exceções

O método chamado não é suportado na classe base. As classes derivadas devem fornecer uma implementação.

Exemplos

O exemplo de código a seguir usa o GetGenericArguments método para exibir os argumentos de tipo de um tipo construído e os parâmetros de tipo de sua definição de tipo genérico.

Este exemplo de código faz parte de um exemplo maior fornecido para a IsGenericTypeDefinition propriedade. Consulte o exemplo maior para saída de exemplo.

C#
if (t.IsGenericType)
{
    // If this is a generic type, display the type arguments.
    //
    Type[] typeArguments = t.GetGenericArguments();

    Console.WriteLine("\tList type arguments ({0}):", 
        typeArguments.Length);

    foreach (Type tParam in typeArguments)
    {
        // If this is a type parameter, display its
        // position.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}\t(unassigned - parameter position {1})",
                tParam,
                tParam.GenericParameterPosition);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}

Comentários

Os elementos da matriz são retornados na ordem em que aparecem na lista de argumentos de tipo para o tipo genérico.

  • Se o tipo atual for um tipo 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 de tipo genérico.

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

  • Se o tipo atual for um tipo construído aberto (ou seja, o ContainsGenericParameters retorno da propriedade true ) no qual tipos específicos não foram atribuídos a todos os parâmetros de tipo e parâmetros de tipo dos tipos genéricos delimitadores ou métodos, 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 usados na reflexão genérica, consulte os comentários da propriedade IsGenericType.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Confira também