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)

 

Date de publication : novembre 2016

Recherche la propriété spécifiée, à l'aide des contraintes de liaison spécifiées.

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

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr
)

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.

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 propriétés portent le nom spécifié et correspondent aux contraintes de liaison spécifiées. Consultez la section Notes.

ArgumentNullException

name a la valeur 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.

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.

Situations dans lesquelles AmbiguousMatchException se produit incluent les éléments suivants :

  • Un type contient deux propriétés indexées qui ont le même nom mais des nombres de paramètres. Pour résoudre l’ambiguïté, utilisez une surcharge de la GetProperty méthode qui spécifie les types de paramètres.

  • Un type dérivé déclare une propriété qui masque une propriété héritée avec le même nom, à l’aide de la new modificateur (Shadows en Visual Basic). Pour résoudre l’ambiguïté, incluez BindingFlags.DeclaredOnly pour limiter la recherche aux membres qui ne sont pas hérités.

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.

L’exemple suivant récupère le type d’une classe définie par l’utilisateur, récupère une propriété de cette classe et affiche le nom de propriété conformément aux contraintes de liaison spécifiées.


using System;
using System.Reflection;
class MyClass
{
    private int myProperty;
    // Declare MyProperty.
    public int MyProperty
    {
        get
        {
            return myProperty;
        }
        set
        {
            myProperty=value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        {
            // Get Type object of MyClass.
            Type myType=typeof(MyClass);       
            // Get the PropertyInfo by passing the property name and specifying the BindingFlags.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty", BindingFlags.Public | BindingFlags.Instance);
            // Display Name propety to console.
            Console.WriteLine("{0} is a property of MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("MyProperty does not exist in MyClass." +e.Message);
        }
    }
}

.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: