Type.GetConstructors Type.GetConstructors Type.GetConstructors Type.GetConstructors Method

Definition

Ruft die Konstruktoren des aktuellen Type ab.Gets the constructors of the current Type.

Überlädt

GetConstructors() GetConstructors() GetConstructors() GetConstructors()

Gibt alle öffentlichen Konstruktoren zurück, die für den aktuellen Type definiert sind.Returns all the public constructors defined for the current Type.

GetConstructors(BindingFlags) GetConstructors(BindingFlags) GetConstructors(BindingFlags) GetConstructors(BindingFlags)

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Type die für den aktuellen BindingFlags definierten Konstruktoren.When overridden in a derived class, searches for the constructors defined for the current Type, using the specified BindingFlags.

GetConstructors() GetConstructors() GetConstructors() GetConstructors()

Gibt alle öffentlichen Konstruktoren zurück, die für den aktuellen Type definiert sind.Returns all the public constructors defined for the current Type.

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

Gibt zurück

Ein Array von ConstructorInfo -Objekten, die alle für den aktuellen Type definierten öffentlichen Instanzkonstruktoren mit Ausnahme des Typinitialisierers (statischer Konstruktor) darstellen.An array of ConstructorInfo objects representing all the public instance constructors defined for the current Type, but not including the type initializer (static constructor). Wenn für den aktuellen Type keine öffentlichen Instanzkonstruktoren definiert sind oder der aktuelle Type einen Typparameter einer generischen Typ- oder Methodendefinition darstellt, wird ein leeres Array vom Typ ConstructorInfo zurückgegeben.If no public instance constructors are defined for the current Type, or if the current Type represents a type parameter in the definition of a generic type or generic method, an empty array of type ConstructorInfo is returned.

Implementiert

Beispiele

Dieses Beispiel zeigt die Ausgabe der über GetConstructors Ladung von einer Klasse, die über zwei Instanzkonstruktoren und einen statischen Konstruktor verfügt.This example shows the output of the GetConstructors overload from a class that has two instance constructors and one static constructor.

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

Die Ausgabe dieses Codes lautet wie folgt:The output of this code is:

22

FalseFalse

FalseFalse

Da die GetConstructors() -Überladung BindingFlags.Public nur BindingFlags.Instanceund verwendet, wird der for statische Konstruktor weder vom Ausdruck gezählt noch von IsStaticausgewertet.Because the GetConstructors() overload uses only BindingFlags.Public and BindingFlags.Instance, the static constructor is neither counted by the for expression nor evaluated by IsStatic.

Um statische Konstruktoren zu finden, verwenden GetConstructors(BindingFlags) Sie die-Überladung, und übergeben Sie die BindingFlags.PublicKombination ( BindingFlags.Instancelogisch OR) von, BindingFlags.Static BindingFlags.NonPublic,,, wie im folgenden Codebeispiel gezeigt:To find static constructors, use the GetConstructors(BindingFlags) overload, and pass the combination (logical OR) of BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.Instance, as shown in the following code example:

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

Nun lautet die Ausgabe wie folgt:Now the output is:

33

FalseFalse

TrueTrue

FalseFalse

Hinweise

Die GetConstructors Methode gibt keine Konstruktoren in einer bestimmten Reihenfolge zurück, z. b. in der Reihenfolge der DeklarationThe GetConstructors method does not return constructors in a particular order, such as declaration order. Der Code darf nicht von der Reihenfolge abhängen, in der Konstruktoren zurückgegeben werden, da diese Reihenfolge variiert.Your code must not depend on the order in which constructors are returned, because that order varies.

In der folgenden Tabelle wird gezeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn ein Typ reflektiert wird.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

MemberartMember Type StatischStatic Nicht statischNon-Static
KonstruktorConstructor NeinNo NeinNo
FeldField NeinNo Ja.Yes. Ein Feld wird immer nach Name und Signatur ausgeblendet.A field is always hide-by-name-and-signature.
eventEvent Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
MethodeMethod NeinNo Ja.Yes. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Namen oder nach Name und Signatur ausgeblendet werden.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Der Typ "Typ"Nested Type NeinNo NeinNo
EigenschaftProperty Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
  1. "Hide-by-Name-and-Signature" berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabe Typen, Parametertypen, Sentinels und nicht verwalteter Aufruf Konventionen.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Dies ist ein binärer Vergleich.This is a binary comparison.

  2. Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet.For reflection, properties and events are hide-by-name-and-signature. Wenn Sie über eine Eigenschaft verfügen, die sowohl einen get-als auch einen Set-Accessor in der Basisklasse aufweist, aber die abgeleitete Klasse nur über einen get-Accessor verfügt, blendet die Eigenschaft der abgeleiteten Klasse die Basisklassen Eigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.Custom attributes are not part of the common type system.

Diese Methoden Überladung ruft GetConstructors(BindingFlags) die-Methoden ÜberladungBindingFlags.Public mit | BindingFlags.Instance BindingFlags.Public (Or BindingFlags.Instance in Visual Basic) auf.This method overload calls the GetConstructors(BindingFlags) method overload, with BindingFlags.Public | BindingFlags.Instance (BindingFlags.PublicOrBindingFlags.Instance in Visual Basic). Klasseninitialisierer (statischer Konstruktor) werden nicht gefunden.It will not find class initializers (static constructor). Um Klasseninitialisierer zu finden, verwenden Sie eine BindingFlagsÜberladung, BindingFlags.Static dieBindingFlags.Static annimmt und ( | BindingFlags.NonPublic Or BindingFlags.NonPublic in Visual Basic) angibt.To find class initializers, use an overload that takes BindingFlags, and specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Sie können den Klasseninitialisierer auch mit der TypeInitializer -Eigenschaft erhalten.You can also get the class initializer using the TypeInitializer property.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese ConstructorInfo Methode die Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the ConstructorInfo objects with the type parameters replaced by the appropriate type arguments. Wenn z. b. C<T> die Klasse über einen C(T t1) Konstruktor (Sub New(ByVal t1 As T) in Visual Basic C(int t1) ) GetConstructors verfügt C<int> , gibt ConstructorInfo der Aufruf von C# fürSub New(ByVal t1 As Integer) einen zurück, der in (in Visual Standard).For example, if class C<T> has a constructor C(T t1) (Sub New(ByVal t1 As T) in Visual Basic), calling GetConstructors on C<int> returns a ConstructorInfo that represents C(int t1) in C# (Sub New(ByVal t1 As Integer) in Visual Basic).

Wenn der aktuelle Type einen generischen Typparameter darstellt, GetConstructors gibt die Methode ein leeres Array zurück.If the current Type represents a generic type parameter, the GetConstructors method returns an empty array.

Siehe auch

GetConstructors(BindingFlags) GetConstructors(BindingFlags) GetConstructors(BindingFlags) GetConstructors(BindingFlags)

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Type die für den aktuellen BindingFlags definierten Konstruktoren.When overridden in a derived class, searches for the constructors defined for the current Type, using the specified BindingFlags.

public:
 abstract cli::array <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[]
Public MustOverride Function GetConstructors (bindingAttr As BindingFlags) As ConstructorInfo()

Parameter

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.A bitwise combination of the enumeration values that specify how the search is conducted.

- oder --or- Default, um ein leeres Array zurückzugeben.Default to return an empty array.

Gibt zurück

Ein Array von ConstructorInfo-Objekten, die sämtliche für den aktuellen Type definierten Konstruktoren, einschließlich eines ggf. definierten Typinitialisierers, darstellen, die den angegebenen Bindungseinschränkungen entsprechen.An array of ConstructorInfo objects representing all constructors defined for the current Type that match the specified binding constraints, including the type initializer if it is defined. Gibt ein leeres Array vom Typ ConstructorInfo zurück, wenn für den aktuellen Type keine Konstruktoren definiert sind, keiner der definierten Konstruktoren den Bindungseinschränkungen entspricht oder der aktuelle Type einen Typparameter einer generischen Typ- oder Methodendefinition darstellt.Returns an empty array of type ConstructorInfo if no constructors are defined for the current Type, if none of the defined constructors match the binding constraints, or if the current Type represents a type parameter in the definition of a generic type or generic method.

Implementiert

Beispiele

Dieses Beispiel zeigt die Ausgabe der über GetConstructors() Ladung von einer Klasse, die über zwei Instanzkonstruktoren und einen statischen Konstruktor verfügt.This example shows the output of the GetConstructors() overload from a class that has two instance constructors and one static constructor.

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

Die Ausgabe dieses Codes lautet wie folgt:The output of this code is:

22

FalseFalse

FalseFalse

Da die GetConstructors -Überladung Public nur Instanceund verwendet, wird der for statische Konstruktor weder vom Ausdruck gezählt noch von IsStaticausgewertet.Because the GetConstructors overload uses only Public and Instance, the static constructor is neither counted by the for expression nor evaluated by IsStatic.

Wenn Sie statische Konstruktoren suchen möchten, GetConstructors verwenden Sie die-Überladung, und übergeben Sie die Kombi BindingFlags.PublicNation (logisches BindingFlags.Instanceor) von, BindingFlags.Static BindingFlags.NonPublic,,, wie im folgenden Codebeispiel gezeigt:To find static constructors, use the GetConstructors overload, and pass it the combination (logical OR) of BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.Instance, as shown in the following code example:

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

Nun lautet die Ausgabe wie folgt:Now the output is:

33

FalseFalse

TrueTrue

FalseFalse

Hinweise

bindingAttrkann verwendet werden, um anzugeben, ob nur öffentliche Konstruktoren oder sowohl öffentliche als auch nicht öffentliche Konstruktoren zurückgegeben werden sollen.bindingAttr can be used to specify whether to return only public constructors or both public and non-public constructors.

Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Konstruktoren in die Suche eingeschlossen werden sollen:The following BindingFlags filter flags can be used to define which constructors to include in the search:

  • Geben BindingFlags.Static Sie zusammen BindingFlags.NonPublic mit an, um den Klasseninitialisierer (statischer Konstruktor) abzurufen.Specify BindingFlags.Static along with BindingFlags.NonPublic to retrieve the class initializer (static constructor). Sie können den Klasseninitialisierer auch mit der TypeInitializer -Eigenschaft erhalten.You can also get the class initializer using the TypeInitializer property.

  • Geben BindingFlags.Instance Sie zusammen mit einem oder beiden BindingFlags.Public und BindingFlags.NonPublic zum Abrufen von Instanzkonstruktoren an.Specify BindingFlags.Instance along with one or both of BindingFlags.Public and BindingFlags.NonPublic to retrieve instance constructors.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Die GetConstructors Methode gibt keine Konstruktoren in einer bestimmten Reihenfolge zurück, z. b. in der Reihenfolge der DeklarationThe GetConstructors method does not return constructors in a particular order, such as declaration order. Der Code darf nicht von der Reihenfolge abhängen, in der Konstruktoren zurückgegeben werden, da diese Reihenfolge variiert.Your code must not depend on the order in which constructors are returned, because that order varies.

Wenn der aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese ConstructorInfo Methode die Objekte mit den Typparametern zurück, die durch die entsprechenden Typargumente ersetzt werden.If the current Type represents a constructed generic type, this method returns the ConstructorInfo objects with the type parameters replaced by the appropriate type arguments. Wenn z. b. C<T> die Klasse über einen C(T t1) Konstruktor (Sub New(ByVal t1 As T) in Visual Basic C(int t1) ) GetConstructors verfügt C<int> , gibt ConstructorInfo der Aufruf von C# fürSub New(ByVal t1 As Integer) einen zurück, der in (in Visual Standard).For example, if class C<T> has a constructor C(T t1) (Sub New(ByVal t1 As T) in Visual Basic), calling GetConstructors on C<int> returns a ConstructorInfo that represents C(int t1) in C# (Sub New(ByVal t1 As Integer) in Visual Basic).

Wenn der aktuelle Type einen generischen Typparameter darstellt, GetConstructors gibt die Methode ein leeres Array zurück.If the current Type represents a generic type parameter, the GetConstructors method returns an empty array.

Siehe auch

Gilt für: