Type.GetGenericArguments Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert een matrix met Type objecten die de typeargumenten van een gesloten algemeen type of de typeparameters van een algemene typedefinitie vertegenwoordigen.
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()
Retouren
Een matrix met Type objecten die de typeargumenten van een algemeen type vertegenwoordigen. Retourneert een lege matrix als het huidige type geen algemeen type is.
Uitzonderingen
De aangeroepen methode wordt niet ondersteund in de basisklasse. Afgeleide klassen moeten een implementatie bieden.
Voorbeelden
In het volgende codevoorbeeld wordt de GetGenericArguments methode gebruikt om de typeargumenten van een samengesteld type en de typeparameters van de algemene typedefinitie weer te geven.
Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de IsGenericTypeDefinition eigenschap. Zie het grotere voorbeeld voor voorbeelduitvoer.
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
Opmerkingen
De matrixelementen worden geretourneerd in de volgorde waarin ze worden weergegeven in de lijst met typeargumenten voor het algemene type.
Als het huidige type een gesloten samengesteld type is (dat wil gezegd, de ContainsGenericParameters eigenschap retourneert
false), bevat de matrix die door de GetGenericArguments methode wordt geretourneerd de typen die zijn toegewezen aan de algemene typeparameters van de algemene typedefinitie.Als het huidige type een algemene typedefinitie is, bevat de matrix de typeparameters.
Als het huidige type een open geconstrueerd type is (dat wil gezegd, de ContainsGenericParameters eigenschap retourneert
true) waarin specifieke typen niet zijn toegewezen aan alle typeparameters en typeparameters voor het insluiten van algemene typen of methoden, bevat de matrix zowel typen als typeparameters. Gebruik de IsGenericParameter eigenschap om ze uit elkaar te vertellen. Zie het codevoorbeeld voor de ContainsGenericParameters eigenschap voor een demonstratie van dit scenario.
Zie de opmerkingen van de IsGenericType eigenschap voor een lijst met invariante voorwaarden voor termen die in generieke reflectie worden gebruikt.