Type.GetGenericArguments Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce una matrice di Type oggetti che rappresentano gli argomenti di tipo di un tipo generico chiuso o i parametri di tipo di una definizione di tipo generico.
public:
virtual cli::array <Type ^> ^ GetGenericArguments();
public virtual Type[] GetGenericArguments();
abstract member GetGenericArguments : unit -> Type[]
override this.GetGenericArguments : unit -> Type[]
Public Overridable Function GetGenericArguments () As Type()
Restituisce
Matrice di Type oggetti che rappresentano gli argomenti di tipo di un tipo generico. Restituisce una matrice vuota se il tipo corrente non è un tipo generico.
Eccezioni
Il metodo richiamato non è supportato nella classe base. Le classi derivate devono fornire un'implementazione.
Esempio
Nell'esempio di codice seguente viene utilizzato il GetGenericArguments metodo per visualizzare gli argomenti di tipo di un tipo costruito e i parametri di tipo della relativa definizione di tipo generico.
Questo esempio di codice fa parte di un esempio più ampio fornito per la IsGenericTypeDefinition proprietà . Vedere l'esempio più grande per l'output di esempio.
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);
}
}
}
if t.IsGenericType then
// If this is a generic type, display the type arguments.
let typeArguments = t.GetGenericArguments()
printfn $"\tList type arguments ({typeArguments.Length}):"
for tParam in typeArguments do
// If this is a type parameter, display its
// position.
if tParam.IsGenericParameter then
printfn $"\t\t{tParam}\t(unassigned - parameter position {tParam.GenericParameterPosition})"
else
printfn $"\t\t{tParam}"
If t.IsGenericType Then
' If this is a generic type, display the type arguments.
'
Dim typeArguments As Type() = t.GetGenericArguments()
Console.WriteLine(vbTab & "List type arguments (" _
& typeArguments.Length & "):")
For Each tParam As Type In typeArguments
' If this is a type parameter, display its position.
'
If tParam.IsGenericParameter Then
Console.WriteLine(vbTab & vbTab & tParam.ToString() _
& vbTab & "(unassigned - parameter position " _
& tParam.GenericParameterPosition & ")")
Else
Console.WriteLine(vbTab & vbTab & tParam.ToString())
End If
Next tParam
End If
Commenti
Gli elementi della matrice vengono restituiti nell'ordine in cui vengono visualizzati nell'elenco di argomenti di tipo per il tipo generico.
Se il tipo corrente è un tipo 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 tipo generico.Se il tipo corrente è una definizione di tipo generico, la matrice contiene i parametri di tipo.
Se il tipo corrente è un tipo costruito aperto ,ovvero la ContainsGenericParameters proprietà restituisce
true) in cui non sono stati assegnati tipi specifici a tutti i parametri di tipo e ai parametri di tipo di inclusione di tipi o metodi generici, 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 usati nella reflection generica, vedere le note sulla proprietà IsGenericType.