Type.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ę obiektów reprezentujących argumenty typu zamkniętego typu ogólnego lub parametry Type typu definicji typu ogólnego.
public:
virtual cli::array <Type ^> ^ GetGenericArguments();
public virtual Type[] GetGenericArguments ();
abstract member GetGenericArguments : unit -> Type[]
override this.GetGenericArguments : unit -> Type[]
Public Overridable Function GetGenericArguments () As Type()
Zwraca
- Type[]
Tablica Type obiektów reprezentujących argumenty typu typu ogólnego. Zwraca pustą tablicę, jeśli bieżący typ nie jest typem ogólnym.
Wyjątki
Wywoływana metoda nie jest obsługiwana w klasie bazowej. Klasy pochodne muszą zapewniać implementację.
Przykłady
W poniższym przykładzie kodu użyto metody , aby wyświetlić argumenty typu skonstruowanego typu i parametry typu GetGenericArguments jego definicji typu ogólnego.
Ten przykład kodu jest częścią większego przykładu dostarczonego dla IsGenericTypeDefinition właściwości . Zobacz większy przykład przykładowych danych wyjściowych.
if ( t->IsGenericType )
{
// If this is a generic type, display the type arguments.
//
array<Type^>^typeArguments = t->GetGenericArguments();
Console::WriteLine( L"\tList type arguments ({0}):",
typeArguments->Length );
System::Collections::IEnumerator^ myEnum =
typeArguments->GetEnumerator();
while ( myEnum->MoveNext() )
{
Type^ tParam = safe_cast<Type^>(myEnum->Current);
// If this is a type parameter, display its
// position.
//
if ( tParam->IsGenericParameter )
{
Console::WriteLine(
L"\t\t{0}\t(unassigned - parameter position {1})",
tParam, tParam->GenericParameterPosition );
}
else
{
Console::WriteLine( L"\t\t{0}", tParam );
}
}
}
if (t.IsGenericType)
{
// If this is a generic type, display the type arguments.
//
Type[] typeArguments = t.GetGenericArguments();
Console.WriteLine("\tList type arguments ({0}):",
typeArguments.Length);
foreach (Type tParam in typeArguments)
{
// If this is a type parameter, display its
// position.
//
if (tParam.IsGenericParameter)
{
Console.WriteLine("\t\t{0}\t(unassigned - parameter position {1})",
tParam,
tParam.GenericParameterPosition);
}
else
{
Console.WriteLine("\t\t{0}", tParam);
}
}
}
If t.IsGenericType Then
' If this is a generic type, display the type arguments.
'
Dim typeArguments As Type() = t.GetGenericArguments()
Console.WriteLine(vbTab & "List type arguments (" _
& typeArguments.Length & "):")
For Each tParam As Type In typeArguments
' If this is a type parameter, display its position.
'
If tParam.IsGenericParameter Then
Console.WriteLine(vbTab & vbTab & tParam.ToString() _
& vbTab & "(unassigned - parameter position " _
& tParam.GenericParameterPosition & ")")
Else
Console.WriteLine(vbTab & vbTab & tParam.ToString())
End If
Next tParam
End If
Uwagi
Elementy tablicy są zwracane w kolejności, w której występują na liście argumentów typu dla typu ogólnego.
Jeśli bieżący typ jest zamkniętym skonstruowanym typem (to oznacza, że właściwość zwraca wartość ), tablica zwrócona przez metodę zawiera typy, które zostały przypisane do parametrów typu ogólnego definicji ContainsGenericParameters
false
typu GetGenericArguments ogólnego.Jeśli bieżący typ jest definicją typu ogólnego, tablica zawiera parametry typu.
Jeśli bieżący typ jest otwartym skonstruowanym typem (to oznacza, że właściwość zwraca wartość ), w którym określone typy nie zostały przypisane do wszystkich parametrów typu i parametrów typu otaczającego typy ogólne lub metody, tablica zawiera zarówno typy, jak i parametry ContainsGenericParameters
true
typu. Użyj właściwości IsGenericParameter , aby je odróżnić. Aby uzyskać pokaz tego scenariusza, zobacz przykładowy kod ContainsGenericParameters dla właściwości .
Aby uzyskać listę niezmiennych warunków dla terminów używanych w ogólnym odbicia, zobacz IsGenericType uwagi dotyczące właściwości.