Nyelv

Type.GetGenericArguments Metódus

Definíció

Olyan objektumtömböt Type ad vissza, amely egy zárt általános típus típusargumentumait vagy egy általános típusdefiníció típusparamétereit jelöli.

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()

Válaszok

Type[]

Egy általános típus típusargumentumait képviselő objektumtömb Type . Üres tömböt ad vissza, ha az aktuális típus nem általános típus.

Kivételek

A meghívott metódus nem támogatott az alaposztályban. A származtatott osztályoknak implementációt kell biztosítaniuk.

Példák

Az alábbi példakód egy GetGenericArguments létrehozott típus típusargumentumait és az általános típusdefiníció típusparamétereit jeleníti meg.

Ez a példakód egy nagyobb, a IsGenericTypeDefinition tulajdonsághoz megadott példa része. A mintakimenetet lásd a nagyobb példában.

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

Megjegyzések

A tömbelemek abban a sorrendben jelennek meg, amelyben az általános típus típusargumentumaiban jelennek meg.

  • Ha az aktuális típus egy zárt szerkezetű típus (azaz a ContainsGenericParameters tulajdonság visszaadja false), a metódus által GetGenericArguments visszaadott tömb tartalmazza azokat a típusokat, amelyeket az általános típusdefiníció általános típusparamétereihez rendeltek.

  • Ha az aktuális típus általános típusdefiníció, a tömb tartalmazza a típusparamétereket.

  • Ha az aktuális típus egy nyitott, konstruktált típus (azaz a ContainsGenericParameters tulajdonság visszaadja true), amelyben az általános típusok vagy metódusok összes típusparaméteréhez és típusparaméteréhez nem rendelték hozzá az adott típusokat, a tömb mind típus- és típusparamétereket tartalmaz. A tulajdonság használatával IsGenericParameter különválaszthatja őket. Ennek a forgatókönyvnek a bemutatásához tekintse meg a tulajdonság kód példáját ContainsGenericParameters .

Az általános tükrözésben használt kifejezések invariáns feltételeinek listáját a IsGenericType tulajdonság megjegyzéseiben találja.

A következőre érvényes:

Lásd még