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

Im folgenden Codebeispiel wird gezeigt, wie Die Typargumente einer generischen Methode abgerufen und angezeigt werden.

Dieses Beispiel ist Teil eines größeren Beispiels für die MakeGenericMethod -Methode.

// If this is a generic method, display its type arguments.
//
if (mi->IsGenericMethod)
{
    array<Type^>^ typeArguments = mi->GetGenericArguments();

    Console::WriteLine("\tList type arguments ({0}):", 
        typeArguments->Length);

    for each (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)
{
    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 die aktuelle Methode eine geschlossene konstruierte Methode ist (d. h. die ContainsGenericParameters -Eigenschaft gibt zurück false), enthält das von der GetGenericArguments -Methode zurückgegebene Array die Typen, die den generischen Typparametern der generischen Methodendefinition zugewiesen wurden.

  • Wenn die aktuelle Methode eine generische Methodendefinition ist, enthält das Array die Typparameter.

  • Wenn es sich bei der aktuellen Methode um eine offene konstruierte Methode handelt (d. h. die -Eigenschaft gibt zurücktrue), in der ContainsGenericParameters bestimmte Typen einigen Typparametern und Typparameter von einschließenden generischen Typen anderen Typparametern zugewiesen wurden, enthält das Array sowohl Typen als auch Typparameter. Verwenden Sie die IsGenericParameter -Eigenschaft, um sie voneinander zu unterscheiden. Eine Demonstration dieses Szenarios finden Sie im Codebeispiel für die ContainsGenericParameters -Eigenschaft.

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

Gilt für:

Weitere Informationen