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.GetProperty méthode (String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

 

Date de publication : novembre 2016

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

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

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)

Paramètres

name
Type: System.String

Chaîne contenant le nom de la propriété à obtenir.

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.

returnType
Type: System.Type

Type de retour de la propriété.

types
Type: System.Type[]

Tableau d'objets Type représentant le nombre, l'ordre et le type des paramètres de la propriété indexée à obtenir.

ou

Tableau vide du type Type (c'est-à-dire Type[] types = new Type[0]) pour obtenir une propriété qui n'est pas indexée.

modifiers
Type: System.Reflection.ParameterModifier[]

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.PropertyInfo

Objet représentant la propriété qui correspond aux critères spécifiés, si elle est trouvée ; sinon, null.

Exception Condition
AmbiguousMatchException

Au moins deux méthodes portent le nom spécifié et correspondent aux contraintes de liaison spécifiées.

ArgumentNullException

name a la valeur null.

ou

types a la valeur null.

ArgumentException

types est multidimensionnel.

ou

modifiers est multidimensionnel.

ou

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

NullReferenceException

Un élément de types est null.

Une propriété est considérée comme publique de la réflexion s’il a au moins un accesseur est public. Sinon, la propriété est considérée comme privée, et vous devez utiliser BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (en Visual Basic, combinez les valeurs à l’aide de Or) pour l’obtenir.

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 permettant d’écrire un binder personnalisé qui traite modifiers. ParameterModifierest 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.

Le tableau suivant présente les membres d’une 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 à celle des méthodes qui implémentent la propriété. 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 virtuelle) peut être masquer 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 à celle des méthodes qui implémentent la propriété. 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, des conventions d’appel non managées, les types de paramètres, les sentinelles et les types de retour. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et événements sont masquer-par-nom-et-signature. Si vous avez une propriété avec une commande get et un accesseur set de 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. Attributs personnalisés ne font pas partie du système de type commun.

Les éléments suivants BindingFlags les indicateurs de filtre peuvent être utilisés pour définir les propriétés à 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 propriétés publiques dans la recherche.

  • Spécifiez BindingFlags.NonPublic pour inclure les propriétés non publiques (autrement dit, les propriétés privées, internes et protégées) dans la recherche.

  • Spécifiez BindingFlags.FlattenHierarchy à inclure public et protected des membres statiques dans la hiérarchie ; private des membres statiques dans les classes héritées ne sont pas inclus.

Les éléments suivants BindingFlags les indicateurs de modificateur peuvent être utilisés pour modifier le fonctionnement de la recherche :

  • BindingFlags.IgnoreCasepour ignorer la casse de name.

  • BindingFlags.DeclaredOnlyPour rechercher uniquement les propriétés déclarées sur le Type, pas les propriétés qui ont été simplement héritées.

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

Si le courant Type représente un type générique construit, cette méthode retourne la PropertyInfo 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 de méthode générique, cette méthode recherche les propriétés de la contrainte de classe.

Visual Basic 2005, Visual C# 2005, et Visual C++ 2005 ont une syntaxe simplifiée pour accéder aux propriétés indexées et permettent à une propriété indexée comme une valeur par défaut pour son type. Par exemple, si la variable myList fait référence à un ArrayList, la syntaxe myList[3] (myList(3) en Visual Basic) récupère l’élément avec l’index 3. Vous pouvez surcharger la propriété.

En c#, cette fonctionnalité est appelée un indexeur et ne peut pas être référencée par nom. Par défaut, un indexeur c# apparaît dans les métadonnées comme une propriété indexée nommée « Item ». Toutefois, un développeur de bibliothèque de classes peut utiliser le IndexerNameAttribute attribut pour modifier le nom de l’indexeur dans les métadonnées. Par exemple, le String classe a un indexeur nommé Chars. Les propriétés indexées créées à l’aide des langages autres que c# peuvent avoir des noms autres que de l’élément, également. 

Pour déterminer si un type a une propriété par défaut, utilisez le GetCustomAttributes(Type, Boolean) méthode pour tester le DefaultMemberAttribute attribut. Si le type a DefaultMemberAttribute, le MemberName propriété retourne le nom de la propriété par défaut.

.NET Framework
Disponible depuis 1.1
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: