MethodInfo.GetGenericArguments Metódus

Definíció

Egy általános metódus típusargumentumait vagy egy általános metódusdefiníció típusparamétereit képviselő objektumtömböt Type ad vissza.

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

Válaszok

Type[]

Egy általános metódus típusargumentumait vagy egy általános metódusdefiníció típusparamétereit képviselő objektumtömb Type . Üres tömböt ad vissza, ha az aktuális metódus nem általános metódus.

Attribútumok

Kivételek

Ez a módszer nem támogatott.

Példák

Az alábbi példakód bemutatja, hogyan szerezheti be egy általános metódus típusargumentumait, és hogyan jelenítheti meg őket.

Ez a példa a metódushoz MakeGenericMethod megadott nagyobb példa része.

// 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

Megjegyzések

A visszaadott tömb elemei abban a sorrendben vannak, amelyben megjelennek az általános metódus típusparamétereinek listájában.

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

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

  • Ha az aktuális metódus egy nyíltan létrehozott metódus (azaz a ContainsGenericParameters tulajdonság visszaadja true), amelyben bizonyos típusparaméterekhez adott típusok lettek hozzárendelve, és az általános típustípusok típusparaméterei más típusparaméterekhez lettek rendelve, a tömb mindkét típus- és típusparamétert tartalmazza. 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 metódusokra vonatkozó kifejezések invariáns feltételeinek listáját a IsGenericMethod tulajdonságban találja. Az általános tükrözésben használt egyéb kifejezések invariáns feltételeinek listáját a Type.IsGenericType tulajdonságban találja.

A következőre érvényes:

Lásd még