내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Type.GetMethod 메서드 (String, BindingFlags, Binder, Type[], ParameterModifier[])

2013-12-13

지정된 인수 형식 및 한정자와 일치하는 매개 변수를 가진 지정된 메서드를 지정된 바인딩 제약 조건으로 검색합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public MethodInfo GetMethod(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	Type[] types,
	ParameterModifier[] modifiers
)

매개 변수

name
형식: System.String
가져올 메서드의 이름이 들어 있는 String입니다.
bindingAttr
형식: System.Reflection.BindingFlags
검색 방법을 지정하는 하나 이상의 BindingFlags로 구성된 비트 마스크입니다.
-또는-
0입니다(null을 반환하는 경우).
binder
형식: System.Reflection.Binder
속성 집합을 정의하고 바인딩을 활성화하는 Binder 개체입니다. 이 개체는 또한 리플렉션을 통해 오버로드된 멤버를 선택할 수 있고 인수 형식을 강제 변환할 수 있으며 멤버를 호출할 수도 있습니다.
-또는-
DefaultBinder를 사용하는 null 참조(Visual Basic의 경우 Nothing)입니다.
types
형식: System.Type []
가져올 메서드에 대한 매개 변수의 수, 차수, 형식 등을 나타내는 Type 개체 배열입니다.
-또는-
매개 변수를 사용하지 않는 메서드를 가져올 Type 개체(EmptyTypes 필드에서 제공됨)의 빈 배열입니다.
modifiers
형식: System.Reflection.ParameterModifier []
types 배열에서 해당하는 요소와 연관된 특성을 나타내는 ParameterModifier 개체 배열입니다. COM interop을 통해 호출하는 경우에만 사용하려고 하면 참조로 전달되는 매개 변수만 처리됩니다. 기본 바인더에서는 이 매개 변수를 처리하지 않습니다.

반환 값

형식: System.Reflection.MethodInfo
지정한 요구 사항에 맞는 메서드가 있으면 해당 메서드를 나타내는 MethodInfo 개체이고, 그렇지 않으면 null입니다.

Implements

IReflect.GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[])

예외조건
AmbiguousMatchException

지정된 바인딩 제약 조건에 맞고 지정된 이름을 갖는 메서드가 하나 이상 있는 경우

ArgumentNullException

namenull인 경우

-또는-

typesnull인 경우

-또는-

types의 요소 중 하나가 null인 경우

ArgumentException

types가 다차원 배열인 경우

-또는-

modifiers가 다차원 배열인 경우

기본 바인더에서 ParameterModifier(modifiers 매개 변수)를 처리하지 않더라도 추상 System.Reflection.Binder 클래스를 사용하여 modifiers를 처리하는 사용자 지정 바인더를 작성할 수 있습니다. ParameterModifier는 COM interop를 통해 호출하는 경우에만 사용되며 참조에 의해 전달된 매개 변수만 처리합니다.

types 배열과 modifiers 배열의 길이가 같습니다. types 배열에 지정된 매개 변수는 modifiers 배열에 지정되는 pdIn, pdOut, pdLcid, pdRetval, pdOptional 및 pdHasDefault 특성을 가질 수 있습니다. 이러한 특성은 각각 [In], [Out], [lcid], [retval], [optional] 및 매개 변수가 기본값을 갖는지 여부를 지정하는 값을 나타냅니다. 매개 변수의 관련 특성은 메타데이터에 저장되고 상호 운용성을 향상시킵니다.

다음과 같은 BindingFlags 필터 플래그를 사용하여 검색에 포함할 메서드를 정의할 수 있습니다.

  • 반환 값을 가져오려면 BindingFlags.Instance 또는 BindingFlags.Static을 지정해야 합니다.

  • public 메서드를 검색에 포함하려면 BindingFlags.Public을 지정합니다.

  • public이 아닌 메서드(즉, private 및 protected 메서드)를 검색에 포함하려면 BindingFlags.NonPublic을 지정합니다.

  • 계층 구조 위로 publicprotected 정적 멤버를 포함하려면 BindingFlags.FlattenHierarchy를 지정합니다. 상속 클래스의 private 정적 멤버는 포함되지 않습니다.

다음과 같은 BindingFlags 한정자 플래그를 사용하여 검색 작동 방법을 변경할 수 있습니다.

  • name의 대/소문자를 무시하는 BindingFlags.IgnoreCase

  • 단순히 상속된 메서드는 검색하지 않고 Type에 선언된 메서드만 검색하는 BindingFlags.DeclaredOnly

자세한 내용은 System.Reflection.BindingFlags를 참조하세요.

참고참고:

생성자와 메서드를 찾는 경우 매개 변수를 생략할 수 없습니다. 호출할 경우에만 매개 변수를 생략할 수 있습니다.

현재 T:System.Type이 생성된 제네릭 형식을 나타내는 경우 이 메서드는 MethodInfo를 반환합니다. 여기에는 적절한 형식 인수로 대체된 형식 매개 변수가 포함됩니다.

현재 Type이 제네릭 형식 또는 제네릭 메서드 정의에 있는 형식 매개 변수를 나타내는 경우 이 메서드는 클래스 제약 조건의 메서드를 검색하거나 클래스 제약 조건이 없으면 Object의 메서드를 검색합니다.

참고참고:

제네릭 메서드의 경우 name에 형식 인수를 포함시키지 않습니다. 예를 들어, C# 코드 GetMember("MyMethod<int>")int 형식의 제네릭 인수가 하나 있는 MyMethod라는 메서드가 아니라 텍스트 이름이 "MyMethod<int>"인 멤버를 검색합니다.

다음 예제에서는 바인딩 제약 조건 및 다양한 인수 형식을 지정하여 MethodA의 특정 오버로드를 찾습니다.

참고참고:

이 예제를 실행하려면 Windows Phone용 정적 TextBlock 컨트롤이 있는 예제 빌드를 참조하세요.



using System;
using System.Reflection;

class Example
{
   // Methods to get:

   public void MethodA(int i, int j) { }

   public void MethodA(int[] i) { }

   public void MethodA(ref int r) { }

   // Method that takes an out parameter.
   public void MethodA(int i, out int o) { o = 100; }


   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      MethodInfo mInfo;

      // Get MethodA(int i, int j)
      mInfo = typeof(Example).GetMethod("MethodA",
          BindingFlags.Public | BindingFlags.Instance,
          null,
          new Type[] { typeof(int), typeof(int) },
          null);
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

      // Get MethodA(int[] i)
      mInfo = typeof(Example).GetMethod("MethodA",
          BindingFlags.Public | BindingFlags.Instance,
          null,
          new Type[] { typeof(int[]) },
          null);
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

      // Get MethodA(ref int r)
      mInfo = typeof(Example).GetMethod("MethodA",
          BindingFlags.Public | BindingFlags.Instance,
          null,
          new Type[] { typeof(int).MakeByRefType() },
          null);
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

      // Get MethodA(int i, out int o)
      mInfo = typeof(Example).GetMethod("MethodA",
          BindingFlags.Public | BindingFlags.Instance,
          null,
          new Type[] { typeof(int), typeof(int).MakeByRefType() },
          null);
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

   }
}

/* This method produces the following output:

Found method: Void MethodA(Int32, Int32)
Found method: Void MethodA(Int32[])
Found method: Void MethodA(Int32 ByRef)
Found method: Void MethodA(Int32, Int32 ByRef)
  */


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft