Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Type.GetConstructors-Methode: (BindingFlags)

 

Veröffentlicht: Oktober 2016

Sucht beim Überschreiben in einer abgeleiteten Klasse unter Verwendung der angegebenen Type die für den aktuellen BindingFlags definierten Konstruktoren.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public abstract ConstructorInfo[] GetConstructors(
	BindingFlags bindingAttr
)

Parameter

bindingAttr
Type: System.Reflection.BindingFlags

Eine Bitmaske aus einem oder mehreren BindingFlags, die angeben, wie die Suche durchgeführt wird.

- oder -

0 (null), damit null zurückgegeben wird.

Rückgabewert

Type: System.Reflection.ConstructorInfo[]

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. 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.

Die GetConstructors Methode gibt keinen Konstruktoren in einer bestimmten Reihenfolge, z. B. die Reihenfolge der Deklaration zurück. Code muss nicht abhängig von der Reihenfolge, in der Konstruktoren zurückgegeben werden, da, bei der Reihenfolge.

bindingAttrkann verwendet werden, um anzugeben, ob nur öffentliche oder öffentlichen und nicht öffentlichen Konstruktoren zurück.

Wenn eine genaue Übereinstimmung nicht vorhanden ist, die binder wird versucht, die im angegebenen Parametertypen zu konvertieren die types Array um eine Übereinstimmung zu aktivieren. Wenn die binder kann eine Übereinstimmung, wählen Sie dann null zurückgegeben wird.

Die folgenden BindingFlags Filterkennzeichnungen genutzt werden, welche Konstruktoren in die Suche einbezogen werden:

  • Geben Sie BindingFlags.Instance oder BindingFlags.Static ändern, um einen Rückgabewert zu erhalten.

  • Geben Sie BindingFlags.Public öffentliche Konstruktoren in die Suche eingeschlossen werden sollen.

  • Geben Sie BindingFlags.NonPublic nicht öffentlichen Konstruktoren (d. h. private, interne und geschützte Konstruktoren) in die Suche eingeschlossen werden sollen. Konstruktoren von Basisklassen werden nicht zurückgegeben.

Weitere Informationen finden Sie unter System.Reflection.BindingFlags.

Um die klasseninitialisierung (".cctor"), die Verwendung dieser methodenüberladung zu erhalten, müssen Sie angeben BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Außerdem erhalten Sie, dass die klasseninitialisierung verwenden die TypeInitializer Eigenschaft.

Wenn die aktuelle Type einen konstruierten generischen Typ darstellt, gibt diese Methode die ConstructorInfo Objekte mit Parametern für den durch die entsprechenden Typargumente ersetzt. Z. B. Wenn Klasse C<T> verfügt über einen Konstruktor C(T t1) (Sub New(ByVal t1 As T) in Visual Basic) wird beim Aufrufen GetConstructors auf C<int> gibt eine ConstructorInfo darstellt, die C(int t1) in c# (Sub New(ByVal t1 As Integer) in Visual Basic).

Wenn die aktuelle Type stellt einen generischen Typparameter der GetConstructors Methode ein leeres Array zurück.

Dieses Beispiel zeigt die Ausgabe der GetConstructors() Überladen von einer Klasse, die zwei Instanzkonstruktoren und einen statischen Konstruktor verfügt.

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);
        }
    }
}

Die Ausgabe dieses Codes lautet:

2

False

False

Da die GetConstructors Überladung verwendet nur Public und Instance, der statische Konstruktor ist weder gezählt, indem die for Ausdruck noch ausgewertet, indem IsStatic.

Um statische Konstruktoren zu ermitteln, verwenden Sie die GetConstructors überladen, und übergeben sie die Kombination (logisches OR) von BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.Instance, wie im folgenden Codebeispiel gezeigt:

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);
        }
    }
}

Jetzt ist die Ausgabe:

3

False

True

False

.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: