Type.GetConstructors 메서드

정의

현재 Type의 생성자를 가져옵니다.

오버로드

GetConstructors()

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

GetConstructors(BindingFlags)

파생 클래스에서 재정의되면, 현재 Type에 대해 정의된 생성자를 지정된 BindingFlags로 검색합니다.

예제

이 예제에서는 GetConstructors() 두 개의 인스턴스 생성자와 하나의 정적 생성자가 있는 클래스에서 오버 로드의 출력을 보여 줍니다.

using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
   t(){}

   static t(){}

   t( int /*i*/ ){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors();
   Console::WriteLine( p->Length );
   for ( int i = 0; i < p->Length; i++ )
   {
      Console::WriteLine( p[ i ]->IsStatic );

   }
}
using System;
using System.Reflection;

public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main() {
        ConstructorInfo[] p = typeof(t).GetConstructors();
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
Imports System.Reflection

Public Class t
    
    Public Sub New()
    End Sub
    
    Shared Sub New()
    End Sub
    
    Public Sub New(i As Integer)
    End Sub
     
    Public Shared Sub Main()
        Dim p As ConstructorInfo() = GetType(t).GetConstructors()
        Console.WriteLine(p.Length)
        
        Dim i As Integer
        For i = 0 To p.Length - 1
            Console.WriteLine(p(i).IsStatic)
        Next i
    End Sub
End Class

이 코드의 출력은 다음과 같습니다.

2
False
False

GetConstructors오버 로드는 및만 사용 하므로 Public Instance 정적 생성자는 식으로 계산 되지 for 않으며에 의해 계산 되지 않습니다 IsStatic .

정적 생성자를 찾으려면 GetConstructors 오버 로드를 사용 하 고 BindingFlags.Public BindingFlags.Static BindingFlags.NonPublic BindingFlags.Instance 다음 코드 예제와 같이,,,의 조합 (논리적 OR)을 전달 합니다.

using namespace System;
using namespace System::Reflection;
public ref class t
{
public:
   t(){}

   t( int /*i*/ ){}

   static t(){}

};

int main()
{
   array<ConstructorInfo^>^p = t::typeid->GetConstructors( static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static | BindingFlags::NonPublic | BindingFlags::Instance) );
   Console::WriteLine( p->Length );
   for ( int i = 0; i < p->Length; i++ )
   {
      Console::WriteLine( p[ i ]->IsStatic );
   }
}
using System;
using System.Reflection;

public class t {
    public t() {}
    static t() {}
    public t(int i) {}

    public static void Main() {
        ConstructorInfo[] p = typeof(t).GetConstructors(
           BindingFlags.Public | BindingFlags.Static |
           BindingFlags.NonPublic | BindingFlags.Instance);
        Console.WriteLine(p.Length);

        for (int i=0;i<p.Length;i++) {
            Console.WriteLine(p[i].IsStatic);
        }
    }
}
Imports System.Reflection

Public Class t
    
    Public Sub New()
    End Sub
    
    Shared Sub New()
    End Sub
    
    Public Sub New(i As Integer)
    End Sub
     
    Public Shared Sub Main()
        Dim p As ConstructorInfo() = GetType(T).GetConstructors( _
           BindingFlags.Public Or _
           BindingFlags.Static Or _
           BindingFlags.NonPublic Or _
           BindingFlags.Instance)
        Console.WriteLine(p.Length)
        
        Dim i As Integer
        For i = 0 To p.Length - 1
            Console.WriteLine(p(i).IsStatic)
        Next i
    End Sub
End Class

이제 출력은 다음과 같습니다.

3
False
True
False

GetConstructors()

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

public:
 cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public:
 virtual cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors();
public System.Reflection.ConstructorInfo[] GetConstructors ();
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.ConstructorInfo[] GetConstructors ();
member this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : unit -> System.Reflection.ConstructorInfo[]
override this.GetConstructors : unit -> System.Reflection.ConstructorInfo[]
Public Function GetConstructors () As ConstructorInfo()

반환

ConstructorInfo[]

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

구현

특성

설명

GetConstructors메서드는 선언 순서와 같이 특정 순서로 생성자를 반환 하지 않습니다. 코드는 생성자가 반환 되는 순서에 따라 달라 야 합니다.

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

멤버 형식 정적 비정적
생성자 아니요 아니요
필드 아니요 예. 필드는 항상 이름 및 시그니처로 숨겨집니다.
이벤트 해당 없음 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드의 상속과 동일하다는 것입니다. 리플렉션은 속성을 hide-by-name-and-signature로 처리합니다. 아래 참고 2를 참조하세요.
메서드 아니요 예. 메서드(가상 및 가상이 아닌 메서드)는 이름별로 숨기거나 이름 및 서명으로 숨길 수 있습니다.
중첩 형식 아니요 아니요
속성 해당 없음 일반적인 형식 시스템 규칙은 상속이 속성을 구현하는 메서드의 상속과 동일하다는 것입니다. 리플렉션은 속성을 hide-by-name-and-signature로 처리합니다. 아래 참고 2를 참조하세요.
  1. 이름별 숨기기 및 서명은 사용자 지정 한정자, 반환 형식, 매개 변수 형식, sentinels 및 관리되지 않는 호출 규칙을 포함하여 서명의 모든 부분을 고려합니다. 이진 비교입니다.

  2. 리플렉션의 경우 속성 및 이벤트는 이름별 및 서명으로 숨깁니다. 기본 클래스에 get 및 set 접근자를 모두 가진 속성이 있지만 파생 클래스에 get 접근자만 있는 경우 파생 클래스 속성은 기본 클래스 속성을 숨기며 기본 클래스의 setter에 액세스할 수 없습니다.

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

이 메서드 오버로드는 GetConstructors(BindingFlags) BindingFlags.Public |(Visual Basic)를 사용하여 메서드 BindingFlags.Instance BindingFlags.Public Or BindingFlags.Instance 오버로드를 호출합니다. 클래스 이니셜라이저(정적 생성자)를 찾을 수 없습니다. 클래스 이니셜라이저를 찾으려면 를 사용하는 오버로드를 사용하고 BindingFlags BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or BindingFlags.NonPublic |(Visual Basic)를 지정합니다. 속성을 사용하여 클래스 이니셜라이저를 얻을 수도 TypeInitializer 있습니다.

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

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

추가 정보

적용 대상

GetConstructors(BindingFlags)

파생 클래스에서 재정의되면, 현재 Type에 대해 정의된 생성자를 지정된 BindingFlags로 검색합니다.

public:
 abstract cli::array <System::Reflection::ConstructorInfo ^> ^ GetConstructors(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.ConstructorInfo[] GetConstructors (System.Reflection.BindingFlags bindingAttr);
[System.Runtime.InteropServices.ComVisible(true)]
public abstract System.Reflection.ConstructorInfo[] GetConstructors (System.Reflection.BindingFlags bindingAttr);
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
[<System.Runtime.InteropServices.ComVisible(true)>]
abstract member GetConstructors : System.Reflection.BindingFlags -> System.Reflection.ConstructorInfo[]
Public MustOverride Function GetConstructors (bindingAttr As BindingFlags) As ConstructorInfo()

매개 변수

bindingAttr
BindingFlags

검색 방법을 지정하는 열거형 값의 비트 조합입니다.

또는 빈 배열을 반환하는 Default입니다.

반환

ConstructorInfo[]

현재 ConstructorInfo에 대해 정의된 생성자 중 지정된 바인딩 제약 조건과 일치하는 모든 생성자(정의된 경우에는 형식 이니셜라이저도 포함)를 나타내는 Type 개체의 배열입니다. 생성자가 현재 ConstructorInfo에 대해 정의되어 있지 않거나, 정의된 생성자 중 바인딩 제약 조건과 일치하는 것이 없거나, 현재 Type이 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우 Type 형식의 빈 배열을 반환합니다.

구현

특성

설명

bindingAttr 을 사용하여 public 생성자만 반환할지 아니면 public 생성자와 public이 아닌 생성자만 반환할지를 지정할 수 있습니다.

다음 BindingFlags 필터 플래그를 사용하여 검색에 포함할 생성자를 정의할 수 있습니다.

  • BindingFlags.Static와 함께 를 BindingFlags.NonPublic 지정하여 클래스 이니셜라이저(정적 생성자)를 검색합니다. 속성을 사용하여 클래스 이니셜라이저를 얻을 수도 TypeInitializer 있습니다.

  • BindingFlags.Instance인스턴스 생성자를 검색하려면 및 중 하나 또는 둘 다와 함께 를 BindingFlags.Public BindingFlags.NonPublic 지정합니다.

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

GetConstructors메서드는 선언 순서와 같은 특정 순서로 생성자를 반환하지 않습니다. 해당 순서가 달라지므로 생성자가 반환되는 순서에 따라 코드가 달라지지 않아야 합니다.

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

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

추가 정보

적용 대상