Type.GetGenericArguments Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
TypeKapalı bir genel türün tür bağımsız değişkenlerini veya bir genel tür tanımının tür parametrelerini temsil eden nesne dizisini döndürür.
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()
Döndürülenler
- Type[]
TypeGenel bir türün tür bağımsız değişkenlerini temsil eden bir nesne dizisi. Geçerli tür genel bir tür değilse boş bir dizi döndürür.
Özel durumlar
Çağırılan yöntem temel sınıfta desteklenmiyor. Türetilmiş sınıfların bir uygulama sağlaması gerekir.
Örnekler
Aşağıdaki kod örneği, GetGenericArguments oluşturulmuş bir türün tür bağımsız değişkenlerini ve genel tür tanımının tür parametrelerini göstermek için yöntemini kullanır.
Bu kod örneği, özelliği için sağlanmış daha büyük bir örneğin bir parçasıdır IsGenericTypeDefinition . Örnek çıktı için daha büyük örneğe bakın.
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
Açıklamalar
Dizi öğeleri, genel türün tür bağımsız değişkenleri listesinde göründükleri sırada döndürülür.
Geçerli tür bir kapalı oluşturulmuş türse (yani, ContainsGenericParameters özelliği döndürürse
false
), yöntemin döndürdüğü dizi GetGenericArguments genel tür tanımının genel tür parametrelerine atanmış olan türleri içerir.Geçerli tür genel bir tür tanımdır, dizi tür parametrelerini içerir.
Geçerli tür açık oluşturulmuş bir tür ise (diğer bir deyişle, ContainsGenericParameters özelliği döndürür
true
) ve kapsayan genel türlerin veya yöntemlerin tüm tür parametrelerine ve tür parametrelerine atanmamış olması halinde dizi hem türler hem de tür parametreleri içerir. IsGenericParameterBunları ayırt etmek için özelliğini kullanın. Bu senaryonun bir gösterimi için, özelliği için kod örneğine bakın ContainsGenericParameters .
Genel yansıma ' de kullanılan koşullara yönelik sabit koşulların bir listesi için, bkz IsGenericType . Özellik açıklamaları.