Freigeben über


MethodInfo.GetGenericArguments Methode

Definition

Gibt ein Array von Type Objekten zurück, die die Typargumente einer generischen Methode oder die Typparameter einer generischen Methodendefinition darstellen.

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

Gibt zurück

Type[]

Ein Array von Type Objekten, die die Typargumente einer generischen Methode oder die Typparameter einer generischen Methodendefinition darstellen. Gibt ein leeres Array zurück, wenn die aktuelle Methode keine generische Methode ist.

Attribute

Ausnahmen

Diese Methode wird nicht unterstützt.

Beispiele

Das folgende Codebeispiel zeigt, wie Die Typargumente einer generischen Methode abgerufen und angezeigt werden.

Dieses Beispiel ist Teil eines größeren Beispiels, das für die MakeGenericMethod Methode bereitgestellt wird.

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

Hinweise

Die Elemente des zurückgegebenen Arrays befinden sich in der Reihenfolge, in der sie in der Liste der Typparameter für die generische Methode angezeigt werden.

  • Wenn es sich bei der aktuellen Methode um eine geschlossene konstruierte Methode handelt (d. h. die ContainsGenericParameters Eigenschaft wird zurückgegeben false), enthält das von der GetGenericArguments Methode zurückgegebene Array die Typen, die den generischen Typparametern der generischen Methodendefinition zugewiesen wurden.

  • Wenn es sich bei der aktuellen Methode um eine generische Methodendefinition handelt, enthält das Array die Typparameter.

  • Wenn es sich bei der aktuellen Methode um eine geöffnete konstruierte Methode (d. h. die Eigenschaft gibt true) zurück, in der ContainsGenericParameters bestimmten Typen bestimmten Typen und Typparametern von eingeschlossenen generischen Typen andere Typparameter zugewiesen wurden, enthält das Array sowohl Typen als auch Typparameter. Verwenden Sie die IsGenericParameter Eigenschaft, um sie auseinander zu setzen. Eine Demonstration dieses Szenarios finden Sie im Codebeispiel für die ContainsGenericParameters Eigenschaft.

Eine Liste der invarianten Bedingungen für begriffe, die spezifisch für generische Methoden sind, finden Sie in der IsGenericMethod Eigenschaft. Eine Liste der invarianten Bedingungen für andere Begriffe, die in generischer Spiegelung verwendet werden, finden Sie in der Type.IsGenericType Eigenschaft.

Gilt für:

Weitere Informationen