Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Type.GetConstructors, méthode (BindingFlags)

En cas de substitution dans une classe dérivée, recherche les constructeurs définis pour le Type en cours, à 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 en cours 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 en cours, 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.

Implémentations

_Type.GetConstructors(BindingFlags)

La méthode GetConstructors ne retourne pas les constructeurs dans un ordre spécifique, par exemple par ordre de déclaration. Votre code ne doit pas être fonction de l'ordre dans lequel les constructeurs sont retournés, car cet ordre varie.

bindingAttr peut être utilisé pour spécifier s'il faut retourner uniquement les constructeurs publics ou les constructeurs publics et non publics.

En l'absence de correspondance exacte, binder essaie de forcer les types de paramètres spécifiés dans le tableau types pour sélectionner une correspondance. Si binder ne parvient pas à sélectionner une correspondance, le résultat retourné est null.

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

  • Vous devez spécifier soit BindingFlags.Instance, soit BindingFlags.Static pour 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 (c'est-à-dire les constructeurs privés, internes et protégés) dans la recherche. Les 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 en Visual Basic). Vous pouvez également obtenir l'initialiseur de classe à l'aide de la propriété TypeInitializer.

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

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

Cet exemple montre la sortie de la surcharge GetConstructors() à 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);
        }
    }
}


Le résultat généré par ce code est le suivant :

2

False

False

Comme la surcharge GetConstructors utilise uniquement Public et Instance, le constructeur statique n'est ni compté par l'expression for, ni évalué par IsStatic.

Pour rechercher des constructeurs statiques, utilisez la surcharge GetConstructors 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);
        }
    }
}


Le résultat devient :

3

False

True

False

.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft