Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Type.GetConstructors méthode (BindingFlags)

 

Date de publication : novembre 2016

En cas de substitution dans une classe dérivée, recherche les constructeurs définis pour le Type actuel, à l'aide du BindingFlags spécifié.

Espace de noms:   System
Assembly:  mscorlib (dans mscorlib.dll)

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

Paramètres

bindingAttr
Type: System.Reflection.BindingFlags

Masque de bits constitué d'un ou de plusieurs BindingFlags spécifiant le mode d'exécution de la recherche.

ou

Zéro, pour retourner null.

Valeur de retour

Type: System.Reflection.ConstructorInfo[]

Tableau d'objets ConstructorInfo représentant tous les constructeurs définis pour le Type actuel qui correspondent aux contraintes de liaison spécifiées, y compris l'initialiseur de type s'il est défini. Retourne un tableau vide de type ConstructorInfo si aucun constructeur n'est défini pour le Type actuel, si aucun des constructeurs définis ne correspond aux contraintes de liaison, ou si le Type actuel représente un paramètre de type d'une définition de type ou de méthode générique.

Le GetConstructors méthode ne retourne pas les constructeurs dans un ordre particulier, tel que l’ordre de déclaration. Votre code ne doit pas dépendent l’ordre dans lequel les constructeurs sont retournés, car cet ordre varie.

bindingAttrpeut être utilisé pour spécifier s’il faut retourner uniquement les constructeurs publics ou les constructeurs publics et non publics.

Si une correspondance exacte n’existe pas, le binder va tenter de forcer les types de paramètre spécifiés dans le types tableau afin de sélectionner une correspondance. Si le binder ne parvient pas à sélectionner une correspondance, puis null est retourné.

Les éléments suivants BindingFlags les indicateurs de filtre peuvent être utilisés pour définir les constructeurs à inclure dans la recherche :

  • Vous devez spécifier soit BindingFlags.Instance ou BindingFlags.Static afin d’obtenir un retour.

  • Spécifiez BindingFlags.Public pour inclure les constructeurs publics dans la recherche.

  • Spécifiez BindingFlags.NonPublic pour inclure des constructeurs non publics (autrement dit, les constructeurs privés, internes et protégés) dans la recherche. Constructeurs de classes de base ne sont pas retournés.

Pour plus d'informations, consultez System.Reflection.BindingFlags.

Pour obtenir l’initialiseur de classe (.cctor) à l’aide de cette surcharge de méthode, vous devez spécifier BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Vous pouvez également obtenir l’initialiseur de classe à l’aide de la TypeInitializer propriété.

Si le courant Type représente un type générique construit, cette méthode retourne le ConstructorInfo objets avec les paramètres de type remplacés par les arguments de type approprié. Par exemple, si classe C<T> a un constructeur C(T t1) (Sub New(ByVal t1 As T) en Visual Basic), l’appel GetConstructors sur C<int> retourne un ConstructorInfo représentant C(int t1) en c# (Sub New(ByVal t1 As Integer) en Visual Basic).

Si le courant Type représente un paramètre de type générique, la GetConstructors méthode retourne un tableau vide.

Cet exemple montre la sortie de la GetConstructors() de surcharge à partir d’une classe qui possède deux constructeurs d’instance et un constructeur statique.

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

La sortie de ce code est :

2

False

False

Étant donné que la GetConstructors surcharge utilise uniquement Public et Instance, le constructeur statique n’est ni compté par le for expression ni évalué par IsStatic.

Pour rechercher des constructeurs statiques, utilisez le GetConstructors de surcharge et passez la combinaison (ou logique) de BindingFlags.Public, BindingFlags.Static, BindingFlags.NonPublic, BindingFlags.Instance, comme illustré dans l’exemple de code suivant :

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

À présent, la sortie :

3

False

True

False

.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: