Type.GetGenericArguments Yöntem

Tanım

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ı.

Şunlara uygulanır

Ayrıca bkz.