MethodInfo.GetGenericArguments Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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ück
true
), 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.