Type.GetConstructors 메서드

2013-12-13

현재 Type에 대해 정의된 모든 public 생성자를 반환합니다.

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

public ConstructorInfo[] GetConstructors()

반환 값

형식: System.Reflection.ConstructorInfo []
형식 이니셜라이저를 제외하고(정적 생성자) 현재 Type에 대해 정의된 모든 public 인스턴스 생성자를 나타내는 ConstructorInfo 개체의 배열입니다. public 인스턴스 생성자가 현재 Type에 대해 정의되어 있지 않거나 현재 Type이 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우 ConstructorInfo 형식의 빈 배열이 반환됩니다.

GetConstructors 메서드는 선언 순서 등의 특정 순서로 생성자를 반환하지 않습니다. 생성자가 반환되는 순서는 달라질 수 있으므로 코드가 이 순서의 영향을 받지 않아야 합니다.

다음 표에서는 Get 메서드를 형식에 리플렉션할 때 해당 메서드에서 반환되는 기본 클래스의 멤버를 보여 줍니다.

멤버 형식

정적

비정적

생성자

아니요

아니요

필드

아니요

예 필드는 항상 이름 및 서명으로 숨겨집니다.

이벤트

사용할 수 없음

공용 형식 시스템 규칙은 상속이 속성을 구현한 메서드의 상속과 같다는 것입니다. 리플렉션은 속성을 이름 및 서명으로 숨겨진 상태로 취급합니다. 다음의 참고 2를 참조하세요.

메서드

아니요

예 가상 및 가상이 아닌 메서드는 모두 이름으로 숨겨지거나 이름 및 서명으로 숨겨질 수 있습니다.

중첩 형식

아니요

아니요

속성

사용할 수 없음

공용 형식 시스템 규칙은 상속이 속성을 구현한 메서드의 상속과 같다는 것입니다. 리플렉션은 속성을 이름 및 서명으로 숨겨진 상태로 취급합니다. 다음의 참고 2를 참조하세요.

참고:

  1. 이름 및 서명으로 숨기면 사용자 지정 한정자, 반환 형식, 매개 변수 형식, 센티널, 관리되지 않는 호출 규칙 등을 포함한 서명의 모든 부분을 인식합니다. 이것은 이진 비교입니다.

  2. 리플렉션을 위해 속성과 이벤트는 이름 및 서명으로 숨겨집니다. 속성의 기본 클래스에 get 및 set 접근자가 모두 있지만 파생 클래스에는 get 접근자만 있는 경우, 파생 클래스 속성에서는 기본 클래스 속성이 숨겨지므로 기본 클래스의 설정자에 액세스할 수 없습니다.

  3. 사용자 지정 특성은 공용 형식 시스템의 일부가 아닙니다.

이 메서드 오버로드는 BindingFlags.Public | BindingFlags.Instance(Visual Basic의 경우 BindingFlags.Public또는BindingFlags.Instance)을 사용하여 GetConstructors(BindingFlags) 메서드 오버로드를 호출하며 클래스 이니셜라이저(.cctor)를 찾지 않습니다. 클래스 이니셜라이저를 찾으려면 BindingFlags를 사용하는 오버로드를 사용하고 BindingFlags.Static | BindingFlags.NonPublic(Visual Basic의 경우 BindingFlags.Static또는BindingFlags.NonPublic)을 지정합니다.

현재 Type이 생성된 제네릭 형식을 나타내는 경우 이 메서드는 ConstructorInfo 개체를 반환합니다. 여기에는 적절한 형식 인수로 대체된 형식 매개 변수가 포함됩니다. 예를 들어, C<T> 클래스에 C(T t1)(Visual Basic의 경우 Sub New(ByVal t1 As T)) 생성자가 있는 경우 C<int> 에 대해 GetConstructors를 호출하면 C#의 경우 C(int t1)(Visual Basic의 경우 Sub New(ByVal t1 As Integer))를 나타내는 ConstructorInfo가 반환됩니다.

현재 Type이 제네릭 형식 매개 변수를 나타내는 경우 GetConstructors 메서드는 빈 배열을 반환합니다.

다음 예제에서는 public 인스턴스 생성자, protected 및 static 생성자(Visual Basic의 경우 Shared 생성자)가 있는 클래스에 대한 두 GetConstructors오버로드의 호출 결과를 보여 줍니다.

GetConstructors() 오버로드는 BindingFlags.PublicBindingFlags.Instance만 사용하므로 static 생성자와 protected 인스턴스 생성자는 표시되지 않습니다.

모든 생성자를 찾으려면 BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublicBindingFlags.Instance의 조합(논리 OR)을 통해 GetConstructors(BindingFlags) 오버로드를 사용합니다.

참고참고:

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


using System.Reflection;

public class Example
{
   protected Example() {}

   static Example() {}

   public Example(int i) {}

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      outputBlock.Text += "Constructors found by GetConstructors():\n";
      foreach (ConstructorInfo ci in typeof(Example).GetConstructors())
      {
         outputBlock.Text += ci.ToString() + "\n";
      }

      outputBlock.Text += "\nConstructors found by GetConstructors(BindingFlags):\n";
      foreach (ConstructorInfo ci in typeof(Example).GetConstructors(
         BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
         BindingFlags.Instance))
      {

         outputBlock.Text += ci.ToString() + "\n";
      }
   }
}

/* This example produces the following output:

Constructors found by GetConstructors():
Void .ctor(Int32)

Constructors found by GetConstructors(BindingFlags):
Void .ctor()
Void .cctor()
Void .ctor(Int32)
 */


Windows Phone OS

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

Windows Phone

표시:
© 2014 Microsoft