Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
Type.GetConstructors, méthode
Retourne tous les constructeurs publics définis pour le Type en cours.
Assembly : mscorlib (dans mscorlib.dll)
Valeur de retour
Type : System.Reflection.ConstructorInfo[]Tableau d'objets ConstructorInfo représentant tous les constructeurs d'instance publics définis pour le Type en cours, sans inclure l'initialiseur de type (constructeur statique). Si aucun constructeur d'instance public n'est défini pour le Type en cours 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, un tableau vide de type ConstructorInfo est retourné.
Implémentations
_Type.GetConstructors()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.
Le tableau suivant indique les membres d'une classe de base qui sont retournés par les méthodes Get lors de la réflexion sur un type.
|
Type de membre |
Static |
Non statique |
|---|---|---|
|
Constructeur |
Non |
Non |
|
Champ |
Non |
Oui. Un champ est toujours masqué-par-nom-et-signature. |
|
Événement |
Non applicable |
La règle du système de type commun (CTS, Common Type System) est que l'héritage est le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous. |
|
Méthode |
Non |
Oui. Une méthode (à la fois virtuelle et non virtuelle) peut être masquée par nom ou masquée-par-nom-et-signature. |
|
De type imbriqué |
Non |
Non |
|
Propriété |
Non applicable |
La règle du système de type commun (CTS, Common Type System) est que l'héritage est le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous. |
-
Masquer-par-nom-et-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d'appel non managées. Il s'agit d'une comparaison binaire.
-
Pour la réflexion, les propriétés et événements sont masqués-par-nom-et-signature. Si une propriété a un accesseur get et set dans la classe de base, mais si la classe dérivée n'a qu'un accesseur get, la propriété de la classe dérivée masque la propriété de la classe de base et vous ne pourrez pas accéder à l'accesseur Set sur la classe de base.
-
Les attributs personnalisés ne font pas partie du système de type commun (CTS, Common Type System).
Cette surcharge de méthode appelle la surcharge de méthode GetConstructors(BindingFlags), avec BindingFlags.Public | BindingFlags.Instance (BindingFlags.PublicOrBindingFlags.Instance en Visual Basic). Les initialiseurs de classe (.cctor) sont introuvables. Pour trouver des initialiseurs de classe, utilisez une surcharge acceptant BindingFlags et spécifiez 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.
Le résultat généré par ce code est le suivant :
2
False
False
Comme la surcharge GetConstructors() utilise uniquement BindingFlags.Public et BindingFlags.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(BindingFlags) et passez la combinaison (OR 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
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
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.