이 설명서는 보관되지만 유지 되지 않습니다.

Type.GetGenericArguments 메서드

제네릭 형식 정의의 형식 매개 변수나 제네릭 형식의 형식 인수를 나타내는 Type 개체의 배열을 반환합니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

public virtual Type[] GetGenericArguments ()
public Type[] GetGenericArguments ()
public function GetGenericArguments () : Type[]
적용할 수 없음.

반환 값

제네릭 형식의 형식 인수를 나타내는 Type 개체의 배열입니다. 현재 형식이 제네릭 형식이 아니면 빈 배열을 반환합니다.

예외 형식조건

NotSupportedException

호출된 메서드가 기본 클래스에서 지원되지 않는 경우. 파생 클래스에서 구현해야 합니다.

배열 요소는 제네릭 형식의 형식 인수 목록에 나타난 순서대로 반환됩니다.

  • 현재 형식이 폐쇄형 생성 형식이면, 즉 ContainsGenericParameters 속성이 false를 반환하면 GetGenericArguments 메서드에서 반환하는 배열에 제네릭 형식 정의의 제네릭 형식 매개 변수에 할당된 형식이 포함되어 있습니다.

  • 현재 형식이 제네릭 형식 정의이면 배열에 형식 매개 변수가 포함되어 있습니다.

  • 현재 형식이 형식 매개 변수와 바깥쪽 제네릭 형식 또는 메서드의 형식 매개 변수 모두에 특정 형식이 할당되어 있지는 않은 개방형 생성 형식이면, 즉 ContainsGenericParameters 속성이 true를 반환하면 해당 배열에는 형식과 형식 매개 변수가 모두 포함되어 있습니다. IsGenericParameter 속성을 사용하여 형식과 형식 매개 변수를 구분합니다. 이 시나리오에 대한 예시를 보려면 ContainsGenericParameters 속성에 대한 코드 예제를 참조하십시오.

제네릭 리플렉션에 사용되는 용어에 대한 고정 조건 목록은 IsGenericType 속성 설명을 참조하십시오.

다음 코드 예제에서는 GetGenericArguments 메서드를 사용하여 생성된 형식의 형식 인수와 제네릭 형식 정의의 형식 매개 변수를 표시합니다.

이 코드 예제는 IsGenericTypeDefinition 속성에 대해 제공되는 보다 큰 예제의 일부입니다.

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.get_IsGenericType()) {
    // If this is a generic type, display the type arguments.
    Type typeArguments[] = t.GetGenericArguments();
    Console.WriteLine("\tList type arguments ({0}):",
        (Int32)typeArguments.get_Length());
    for (int iCtr = 0; iCtr < typeArguments.get_Length(); iCtr++) {
        Type tParam = typeArguments[iCtr];
        // If this is a type parameter, display its
        // position.
        
        if (tParam.get_IsGenericParameter()) {
            Console.WriteLine("\t\t{0}\t(unassigned - parameter "
                + "position {1})", tParam, 
                (Int32)tParam.get_GenericParameterPosition());
        }
        else {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0은 Windows Vista, Microsoft Windows XP SP2 및 Windows Server 2003 SP1에서 지원됩니다.

.NET Framework

3.0, 2.0에서 지원

.NET Compact Framework

2.0에서 지원

XNA Framework

1.0에서 지원
표시: