MethodInfo.GetGenericArguments Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca tablicę Type obiektów reprezentujących argumenty typu metody ogólnej lub parametry typu definicji metody ogólnej.
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()
Zwraca
Tablica Type obiektów reprezentujących argumenty typu metody ogólnej lub parametrów typu definicji metody ogólnej. Zwraca pustą tablicę, jeśli bieżąca metoda nie jest metodą ogólną.
- Atrybuty
Wyjątki
Ta metoda nie jest obsługiwana.
Przykłady
W poniższym przykładzie kodu pokazano, jak uzyskać argumenty typu metody ogólnej i wyświetlić je.
Ten przykład jest częścią większego przykładu podanego MakeGenericMethod dla metody .
// 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
Uwagi
Elementy zwracanej tablicy są w kolejności, w której są wyświetlane na liście parametrów typu dla metody ogólnej.
Jeśli bieżąca metoda jest zamkniętą metodą skonstruowaną (czyli ContainsGenericParameters właściwość zwraca
false
), tablica zwrócona przez GetGenericArguments metodę zawiera typy przypisane do parametrów typu ogólnego definicji metody ogólnej.Jeśli bieżąca metoda jest definicją metody ogólnej, tablica zawiera parametry typu.
Jeśli bieżąca metoda jest otwartą skonstruowaną metodą (czyli ContainsGenericParameters właściwości zwraca
true
) w której określone typy zostały przypisane do niektórych parametrów typu i parametrów typu otaczającego typy ogólne zostały przypisane do innych parametrów typu, tablica zawiera zarówno typy, jak i parametry typu. IsGenericParameter Użyj właściwości , aby je odróżnić. Aby zapoznać się z pokazem tego scenariusza, zobacz przykładowy kod dla ContainsGenericParameters właściwości.
Aby uzyskać listę niezmiennych warunków dotyczących warunków specyficznych dla metod ogólnych, zobacz IsGenericMethod właściwość . Aby uzyskać listę niezmiennych warunków dla innych terminów używanych w odbiciu ogólnym, zobacz Type.IsGenericType właściwość .