Type.GetGenericArguments Methode

Definitie

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

Type[]

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.

Van toepassing op

Zie ook