MethodInfo.GetGenericArguments Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve um array de Type objetos 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()
Devoluções
Um array de Type objetos 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. Devolve um array vazio se o método atual não for genérico.
- Atributos
Exceções
Este método não é suportado.
Exemplos
O exemplo de código seguinte 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)
{
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
Observações
Os elementos do array devolvido 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 (isto é, a ContainsGenericParameters propriedade devolve
false), o array devolvido pelo GetGenericArguments método contém os tipos que foram atribuídos aos parâmetros genéricos de tipo da definição genérica do método.Se o método atual for uma definição genérica de método, o array contém os parâmetros de tipo.
Se o método atual for um método construído aberto (isto é, a ContainsGenericParameters propriedade devolve
true) em que tipos específicos foram atribuídos a alguns parâmetros de tipo e parâmetros de tipo que encerram tipos genéricos foram atribuídos a outros parâmetros de tipo, o array contém tanto tipos como parâmetros de tipo. Usa a IsGenericParameter propriedade para os distinguir. Para uma demonstração deste cenário, veja o exemplo do código para a ContainsGenericParameters propriedade.
Para uma lista das condições invariantes para termos específicos de métodos genéricos, veja a IsGenericMethod propriedade. Para uma lista das condições invariantes para outros termos usados na reflexão genérica, veja a Type.IsGenericType propriedade.