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.GetConstructor, méthode (BindingFlags, Binder, Type[], ParameterModifier[])
Recherche un constructeur dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, à l'aide des contraintes de liaison spécifiées.
Assembly : mscorlib (dans mscorlib.dll)
[ComVisibleAttribute(true)] public ConstructorInfo GetConstructor( BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers )
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.
- binder
- Type : System.Reflection.Binder
Objet qui définit un ensemble de propriétés et permet la liaison, ce qui peut impliquer la sélection d'une méthode surchargée, la contrainte de types d'arguments et l'appel d'un membre par la réflexion.
ou
Référence null (Nothing en Visual Basic) pour utiliser DefaultBinder.
- types
- Type : System.Type[]
Tableau d'objets Type représentant le nombre, l'ordre et le type des paramètres du constructeur à obtenir.
ou
Tableau vide de type Type (c'est-à-dire Type[] types = new Type[0]) pour obtenir un constructeur qui ne prend aucun paramètre.
ou
EmptyTypes.
- modifiers
- Type : System.Reflection.ParameterModifier[]
Tableau d'objets ParameterModifier représentant les attributs associés à l'élément correspondant dans le tableau de types de paramètres. Le binder par défaut ne traite pas ce paramètre.
Valeur de retour
Type : System.Reflection.ConstructorInfoObjet ConstructorInfo qui représente le constructeur correspondant aux critères spécifiés, s'il existe ; sinon, null.
Implémentations
_Type.GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[])| Exception | Condition |
|---|---|
| ArgumentNullException |
types est null. ou Un des éléments dans types est null. |
| ArgumentException |
types est multidimensionnel. ou modifiers est multidimensionnel. ou types et modifiers n'ont pas la même longueur. |
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.
Consultez System.Reflection.BindingFlags pour plus d'informations.
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.
Remarque
|
|---|
|
Vous ne pouvez pas omettre de paramètres lorsque vous cherchez les constructeurs et méthodes. Vous pouvez uniquement omettre les paramètres lors de l'appel. |
Si le Type actuel représente un type générique construit, cette méthode retourne ConstructorInfo avec les paramètres de type remplacés par les arguments de type appropriés. Si le Type actuel représente un paramètre de type dans la définition d'un type ou d'une méthode générique, cette méthode retourne toujours la valeur null.
Le programme suivant obtient le type de la classe MyClass1 et l'objet ConstructorInfo correspondant aux indicateurs de liaisons spécifiés, puis il affiche la signature du constructeur.
using System; using System.Reflection; using System.Security; public class MyClass1 { public MyClass1(int i){} public static void Main() { try { Type myType = typeof(MyClass1); Type[] types = new Type[1]; types[0] = typeof(int); // Get the constructor that is public and takes an integer parameter. ConstructorInfo constructorInfoObj = myType.GetConstructor( BindingFlags.Instance | BindingFlags.Public, null, types, null); if (constructorInfoObj != null ) { Console.WriteLine("The constructor of MyClass1 that is public " + "and takes an integer as a parameter is:"); Console.WriteLine(constructorInfoObj.ToString()); } else { Console.WriteLine("The constructor of the MyClass1 that is public " + "and takes an integer as a parameter is not available."); } } catch(ArgumentNullException e) { Console.WriteLine("ArgumentNullException: " + e.Message); } catch(ArgumentException e) { Console.WriteLine("ArgumentException: " + e.Message); } catch(SecurityException e) { Console.WriteLine("SecurityException: " + e.Message); } catch(Exception e) { Console.WriteLine("Exception: " + e.Message); } } }
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.
Remarque