MethodInfo.GetGenericArguments 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
제네릭 메서드의 형식 인수나 제네릭 메서드 정의의 형식 매개 변수를 나타내는 Type 개체의 배열을 반환합니다.
public:
override cli::array <Type ^> ^ GetGenericArguments();
public override Type[] GetGenericArguments ();
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments ();
override this.GetGenericArguments : unit -> Type[]
[<System.Runtime.InteropServices.ComVisible(true)>]
override this.GetGenericArguments : unit -> Type[]
Public Overrides Function GetGenericArguments () As Type()
반환
제네릭 메서드의 형식 인수나 제네릭 메서드 정의의 형식 매개 변수를 나타내는 Type 개체의 배열입니다. 현재 메서드가 제네릭 메서드가 아니면 빈 배열을 반환합니다.
- 특성
예외
이 메서드는 지원되지 않습니다.
예제
다음 코드 예제에서는 제네릭 메서드의 형식 인수를 가져와서 표시하는 방법을 보여줍니다.
이 예제는 메서드에 제공된 더 큰 예제의 MakeGenericMethod 일부입니다.
// 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
설명
반환된 배열의 요소는 제네릭 메서드의 형식 매개 변수 목록에 표시되는 순서대로 표시됩니다.
현재 메서드가 닫힌 생성된 메서드(즉, ContainsGenericParameters 속성이 반환
false
됨)인 경우 메서드에서 반환하는 GetGenericArguments 배열에는 제네릭 메서드 정의의 제네릭 형식 매개 변수에 할당된 형식이 포함됩니다.현재 메서드가 제네릭 메서드 정의인 경우 배열에는 형식 매개 변수가 포함됩니다.
현재 메서드가 특정 형식 매개 변수에 할당된 개방형 생성 메서드(즉, ContainsGenericParameters 속성이 반환
true
됨)이면 특정 형식이 일부 형식 매개 변수에 할당되고 제네릭 형식의 형식 매개 변수가 다른 형식 매개 변수에 할당된 경우 배열에는 형식 및 형식 매개 변수가 모두 포함됩니다. IsGenericParameter 속성을 사용하여 구분합니다. 이 시나리오의 데모는 속성에 대한 코드 예제를 ContainsGenericParameters 참조하세요.
제네릭 메서드와 관련된 용어에 대한 고정 조건 목록은 속성을 참조 IsGenericMethod 하세요. 제네릭 리플렉션에 사용되는 다른 용어에 대한 고정 조건 목록은 속성을 참조 Type.IsGenericType 하세요.
적용 대상
추가 정보
.NET