GetConstructor Méthode (BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
Réduire la table des matières
Développer la table des matières
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.GetConstructor, méthode (BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])

 

Recherche un constructeur dont les paramètres correspondent aux types d'arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison et la convention d'appel indiquées.

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

[ComVisibleAttribute(true)]
public ConstructorInfo GetConstructor(
	BindingFlags bindingAttr,
	Binder binder,
	CallingConventions callConvention,
	Type[] types,
	ParameterModifier[] modifiers
)

Paramètres

bindingAttr

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

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.

callConvention

Objet qui spécifie l'ensemble de règles à utiliser en ce qui concerne l'ordre et la disposition des arguments, la manière dont la valeur de retour est passée, les registres utilisés pour les arguments et la manière dont la pile est nettoyée.

types

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.

modifiers

Tableau d'objets ParameterModifier représentant les attributs associés à l'élément correspondant dans le tableau types.Le binder par défaut ne traite pas ce paramètre.

Valeur de retour

Type: System.Reflection.ConstructorInfo

Objet représentant le constructeur qui correspond aux critères spécifiés, s'il est trouvé ; sinon, null.

Exception Condition
ArgumentNullException

types a la valeur null.

ou

Un des éléments de types est null.

ArgumentException

types est multidimensionnel.

ou

modifiers est multidimensionnel.

ou

types et modifiers n'ont pas la même longueur.

Bien que le binder par défaut ne traite pas ParameterModifier (le modifiers paramètre), vous pouvez utiliser le résumé System.Reflection.Binder classe pour écrire un binder personnalisé qui traite modifiers. ParameterModifier est utilisé uniquement lors de l'appel via COM interop, et seuls les paramètres qui sont passés par référence sont gérées.

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 pour 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 BindingFlags.Instance ou 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.

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

Pour obtenir l'initialiseur de classe (.cctor) à l'aide de cette 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 TypeInitializer propriété.

Le tableau suivant présente les membres de classe de base sont retournés par la Get méthodes lors de la réflexion sur un type.

Type de membre

Statique

Non statique

Constructeur

Non

Non

Champ

Non

Oui.Un champ est toujours masquer-par-nom-et-signature.

Événement

Non applicable

La règle de système de type commun est que l'héritage est identique à celui des méthodes qui implémentent la propriété.La réflexion traite les propriétés comme masquer-par-nom-et-signature.Voir la Remarque 2 ci-dessous.

Méthode

Non

Oui.Une méthode (virtuelle et non virtuel) peut être masquée par nom ou masquer-par-nom-et-signature.

Type imbriqué

Non

Non

Propriété

Non applicable

La règle de système de type commun est que l'héritage est identique à celui des méthodes qui implémentent la propriété.La réflexion traite les propriétés comme masquer-par-nom-et-signature.Voir la Remarque 2 ci-dessous.

  1. Masquer-par-nom-et-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, retournent de types, les types de paramètre, sentinelles et conventions d'appel non managées.Il s'agit d'une comparaison binaire.

  2. Pour la réflexion, les propriétés et les événements sont masquer-par-nom-et-signature.Si vous avez une propriété avec une commande get et un accesseur set dans la classe de base, mais la classe dérivée possède uniquement un accesseur get, la propriété de la classe dérivée masque la propriété de classe de base, et vous ne pourrez pas accéder à l'accesseur Set sur la classe de base.

  3. Les attributs personnalisés ne font pas partie du système de type commun.

System_CAPS_noteRemarque

Vous ne pouvez pas omettre les paramètres lors de la recherche des constructeurs et méthodes.Vous pouvez uniquement omettre les paramètres lors de l'appel.

Si le courant Type représente un type générique construit, cette méthode retourne la ConstructorInfo avec les paramètres de type remplacés par les arguments de type approprié.Si le courant Type représente un paramètre de type dans la définition d'un type générique ou une méthode générique, cette méthode retourne toujours null.

L'exemple suivant obtient le type de MyClass1, obtient le ConstructorInfo objet correspondant aux indicateurs de liaison spécifiés, puis 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 public instance constructor that takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null,
                CallingConventions.HasThis, types, null);
            if(constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that is a public instance " +
                    "method 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);
        }
    }
}

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher:
© 2016 Microsoft