MethodInfo.IsGenericMethodDefinition 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
현재 MethodInfo가 제네릭 메서드 정의를 나타내는지 여부를 표시하는 값을 가져옵니다.
public:
virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean
속성 값
MethodInfo 개체가 제네릭 메서드 정의를 나타내면 true
이고, 그렇지 않으면 false
입니다.
예제
다음 코드 예제를 사용 하 여 IsGenericMethodDefinition
는 속성을 나타내는 메시지를 표시 하는 MethodInfo 제네릭 메서드 정의를 나타내는 합니다.
이 예제는 메서드에 제공된 더 큰 예제의 MakeGenericMethod 일부입니다.
Console.WriteLine(vbTab _
& "Is this a generic method definition? {0}", _
mi.IsGenericMethodDefinition)
Console.WriteLine("\tIs this a generic method definition? {0}",
mi.IsGenericMethodDefinition);
Console::WriteLine("\tIs this a generic method definition? {0}",
mi->IsGenericMethodDefinition);
설명
현재 MethodInfo 가 제네릭 메서드 정의를 나타내는 경우 다음을 수행합니다.
IsGenericMethodDefinition
가true
를 반환하는 경우메서드에서 반환된 배열의 각 Type 개체에 대해 다음을 수행 GetGenericArguments() 합니다.
Type.IsGenericParameter 속성이
true
를 반환합니다.는 Type.DeclaringMethod 현재 MethodInfo를 반환합니다.
Type.GenericParameterPosition 속성은 배열에 있는 개체의 Type 위치와 동일합니다.
사용 하 여는 IsGenericMethodDefinition
속성 형식 인수 제네릭 메서드의 형식 매개 변수에 할당 되었는지 여부를 확인 합니다. 형식 인수가 할당 IsGenericMethodDefinition
된 경우 일부 형식 인수가 바깥쪽 형식의 형식 매개 변수를 나타내는 개체인 경우에도 속성은 Type false를 반환합니다. 예를 들어 다음 C#, Visual Basic 및 C++ 코드를 고려합니다.
```csharp
class C
{
T N<T,U>(T t, U u) {...}
public V M<V>(V v)
{
return N<V,int>(v, 42);
}
}
```
```vb
Class C
Public Function N(Of T,U)(ByVal ta As T, ByVal ua As U) As T
...
End Function
Public Function M(Of V)(ByVal va As V ) As V
Return N(Of V, Integer)(va, 42)
End Function
End Class
```
```cpp
ref class C
{
private:
generic <typename T, typename U> T N(T t, U u) {...}
public:
generic <typename V> V M(V v)
{
return N<V, int>(v, 42);
}
};
```
M의 메서드 본문에는 M의 형식 매개 변수와 형식을 지정하는 메서드 N에 대한 호출이 Int32포함됩니다. 속성은 IsGenericMethodDefinition
메서드 N<V,int>
에 대해 false를 반환합니다.
참고
C 클래스를 반영할 때 생성된 열린 메서드 N<V,int>
가 발생하지 않지만 C를 동적 클래스로 내보내려면 를 사용하여 MakeGenericMethod 생성해야 합니다.
제네릭 메서드 정의에 선언 형식의 제네릭 매개 변수가 포함된 경우 생성된 각 형식과 관련된 제네릭 메서드 정의가 있습니다. 예를 들어 다음 C# 및 Visual Basic 코드를 고려합니다.
```csharp
class B<U,V> {}
class C<T> { public B<T,S> M<S>() {...}}
```
```vb
Class B(Of U, V)
End Class
Class C(Of T)
Public Function M(Of S)() As B(Of T, S)
...
End Function
End Class
```
```cpp
generic <typename U, typename V> ref class B {};
generic <typename T> ref class C
{
public:
generic <typename S> B<T,S>^ M() {...};
};
```
생성된 형식 C<int>
(C(Of Integer)
Visual Basic의 경우)에서 제네릭 메서드 M은 를 반환합니다 B<int, S>
. 열린 형식 C<T>
에서 M은 를 반환합니다 B<T, S>
. 두 경우 모두 속성은 IsGenericMethodDefinition
M을 나타내는 에 대해 MethodInfo 를 반환 true
합니다.
제네릭 메서드와 관련된 용어에 대한 고정 조건 목록은 속성을 참조 IsGenericMethod 하세요. 제네릭 리플렉션에 사용되는 다른 용어에 대한 고정 조건 목록은 속성을 참조 IsGenericType 하세요.