Type.GetGenericArguments Type.GetGenericArguments Type.GetGenericArguments Type.GetGenericArguments Method

정의

닫힌 제네릭 형식의 형식 정의나 제네릭 형식 정의의 형식 매개 변수를 나타내는 Type 개체의 배열을 반환합니다.Returns an array of Type objects that represent the type arguments of a closed generic type or the type parameters of a generic type definition.

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()

반환

Type[]

제네릭 형식의 형식 인수를 나타내는 Type 개체의 배열입니다.An array of Type objects that represent the type arguments of a generic type. 현재 형식이 제네릭 형식이 아니면 빈 배열을 반환합니다.Returns an empty array if the current type is not a generic type.

예외

호출된 메서드가 기본 클래스에서 지원되지 않습니다.The invoked method is not supported in the base class. 파생 클래스에서 구현을 제공해야 합니다.Derived classes must provide an implementation.

예제

다음 코드 예제에서는 GetGenericArguments 생성 된 형식의 형식 인수 및 해당 제네릭 형식 정의의 형식 매개 변수를 표시 하는 방법입니다.The following code example uses the GetGenericArguments method to display the type arguments of a constructed type and the type parameters of its generic type definition.

이 코드 예제는에 대해 제공 된 큰 예제의 일부는 IsGenericTypeDefinition 속성입니다.This code example is part of a larger example provided for the IsGenericTypeDefinition property. 샘플 출력에 대 한 더 큰 예제를 참조 하세요.See the larger example for sample output.

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

설명

배열 요소는 제네릭 형식의 형식 인수 목록에 나타나는 순서 대로 반환 됩니다.The array elements are returned in the order in which they appear in the list of type arguments for the generic type.

  • 현재 형식이 닫힌 생성 된 형식인 경우 (즉, 합니다 ContainsGenericParameters 속성이 반환 false)를 반환 하는 배열을 GetGenericArguments 메서드는 제네릭 형식 정의의 제네릭 형식 매개 변수에 할당 된 형식을 포함 .If the current type is a closed constructed type (that is, the ContainsGenericParameters property returns false), the array returned by the GetGenericArguments method contains the types that have been assigned to the generic type parameters of the generic type definition.

  • 현재 형식이 제네릭 형식 정의 인 경우 배열 형식 매개 변수를 포함 합니다.If the current type is a generic type definition, the array contains the type parameters.

  • 현재 형식이 개방형 생성된 형식 (즉, 합니다 ContainsGenericParameters 속성이 반환 true) 어떤 종류의 모든 형식 매개 변수 및 바깥쪽 제네릭 형식 또는 메서드의 형식 매개 변수를 할당 된 있지, 배열에 포함 형식 및 형식 매개 변수입니다.If the current type is an open constructed type (that is, the ContainsGenericParameters property returns true) in which specific types have not been assigned to all of the type parameters and type parameters of enclosing generic types or methods, the array contains both types and type parameters. 사용 된 IsGenericParameter 구분 하는 속성입니다.Use the IsGenericParameter property to tell them apart. 이 시나리오를 보여 주는 코드 예를 참조 하세요.를 ContainsGenericParameters 속성입니다.For a demonstration of this scenario, see the code example for the ContainsGenericParameters property.

제네릭 리플렉션에 사용되는 용어의 고정 조건 목록은 IsGenericType 속성 설명을 참조하세요.For a list of the invariant conditions for terms used in generic reflection, see the IsGenericType property remarks.

적용 대상

추가 정보