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 erhalten und angezeigt werden.

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

// 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 -Eigenschaft gibt zurück), enthält das von der -Methode zurückgegebene Array die Typen, die den generischen Typparametern der generischen Methodendefinition zugewiesen ContainsGenericParameters false GetGenericArguments wurden.

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

  • Wenn die aktuelle Methode eine offene konstruierte Methode ist (d. h. die -Eigenschaft gibt zurück), in der bestimmte Typen einigen Typparametern und Typparametern von umschließenden generischen Typen anderen Typparametern zugewiesen wurden, enthält das Array sowohl Typen als auch ContainsGenericParameters true Typparameter. Verwenden Sie die IsGenericParameter -Eigenschaft, um sie voneinander zu teilen. 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:

Siehe auch