MethodInfo.GetGenericArguments 메서드

정의

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

public:
 override cli::array <Type ^> ^ GetGenericArguments();
public override Type[] GetGenericArguments ();
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments ();
override this.GetGenericArguments : unit -> Type[]
Public Overrides Function GetGenericArguments () As Type()

반환

Type[]

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

특성

예외

이 메서드는 지원되지 않습니다.This method is not supported.

예제

다음 코드 예제에서는 제네릭 메서드의 형식 인수를 가져오고 표시 하는 방법을 보여 줍니다.The following code example shows how to get the type arguments of a generic method and display them.

이 예제는 MakeGenericMethod 메서드에 제공 된 더 큰 예제의 일부입니다.This example is part of a larger example provided for the MakeGenericMethod method.

// If this is a generic method, display its type arguments.
//
if (mi->IsGenericMethod)
{
    array<Type^>^ typeArguments = mi->GetGenericArguments();

    Console::WriteLine("\tList type arguments ({0}):", 
        typeArguments->Length);

    for each (Type^ tParam in typeArguments)
    {
        // IsGenericParameter is true only for generic type
        // parameters.
        //
        if (tParam->IsGenericParameter)
        {
            Console::WriteLine("\t\t{0}  parameter position {1}" +
                "\n\t\t   declaring method: {2}",
                tParam,
                tParam->GenericParameterPosition,
                tParam->DeclaringMethod);
        }
        else
        {
            Console::WriteLine("\t\t{0}", tParam);
        }
    }
}
// If this is a generic method, display its type arguments.
//
if (mi.IsGenericMethod)
{
    Type[] typeArguments = mi.GetGenericArguments();

    Console.WriteLine("\tList type arguments ({0}):", 
        typeArguments.Length);

    foreach (Type tParam in typeArguments)
    {
        // IsGenericParameter is true only for generic type
        // parameters.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}  parameter position {1}" +
                "\n\t\t   declaring method: {2}",
                tParam,
                tParam.GenericParameterPosition,
                tParam.DeclaringMethod);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}
' If this is a generic method, display its type arguments.
'
If mi.IsGenericMethod Then
    Dim typeArguments As Type() = mi.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments ({0}):", _
        typeArguments.Length)
    
    For Each tParam As Type In typeArguments
        ' IsGenericParameter is true only for generic type
        ' parameters.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab _
                & "{0}  parameter position: {1}" _
                & vbCrLf & vbTab & vbTab _
                & "   declaring method: {2}", _
                tParam,  _
                tParam.GenericParameterPosition, _
                tParam.DeclaringMethod)
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

설명

반환된 된 배열 요소의 제네릭 메서드의 형식 매개 변수 목록에 나타나는 순서는입니다.The elements of the returned array are in the order in which they appear in the list of type parameters for the generic method.

  • 현재 메서드가 폐쇄형 생성 메서드인 경우 (ContainsGenericParameters 속성이 false를 반환 하는 경우) GetGenericArguments 메서드에서 반환 되는 배열에는 제네릭 메서드 정의의 제네릭 형식 매개 변수에 할당 된 형식이 포함 됩니다.If the current method is a closed constructed method (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 method definition.

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

  • 현재 메서드가 개방형 생성 메서드인 경우 (즉, ContainsGenericParameters 속성은 특정 형식이 일부 형식 매개 변수에 할당 되 고 바깥쪽 제네릭 형식의 형식 매개 변수가 다른 형식 매개 변수에 할당 된 true)을 반환 합니다. 배열에는 형식과 형식 매개 변수가 모두 포함 됩니다.If the current method is an open constructed method (that is, the ContainsGenericParameters property returns true) in which specific types have been assigned to some type parameters and type parameters of enclosing generic types have been assigned to other type parameters, 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.

제네릭 메서드와 관련 된 용어에 대 한 고정 조건 목록은 IsGenericMethod 속성을 참조 하세요.For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. 제네릭 리플렉션에 사용 되는 다른 용어의 고정 조건 목록은 Type.IsGenericType 속성을 참조 하세요.For a list of the invariant conditions for other terms used in generic reflection, see the Type.IsGenericType property.

적용 대상

추가 정보