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)

 

Date de publication : novembre 2016

Recherche la propriété publique avec le nom spécifié.

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

public PropertyInfo GetProperty(
	string name
)

Paramètres

name
Type: System.String

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

Valeur de retour

Type: System.Reflection.PropertyInfo

Objet représentant la propriété publique avec le nom spécifié, si elle est trouvée ; sinon, null.

Exception Condition
AmbiguousMatchException

Plus d’une propriété a été trouvée avec le nom spécifié. Consultez la section Notes.

ArgumentNullException

name a la valeur null.

La recherche de name respecte la casse. La recherche inclut les propriétés d’instance public de static et public.

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.

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é, utilisez la GetProperty(String, BindingFlags) surcharge de méthode et ajoutez le BindingFlags.DeclaredOnly indicateur 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 la Type objet d’une classe définie par l’utilisateur, récupère une propriété de cette classe et affiche le nom de propriété.


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 the Type object corresponding to MyClass.
            Type myType=typeof(MyClass);       
            // Get the PropertyInfo object by passing the property name.
            PropertyInfo myPropInfo = myType.GetProperty("MyProperty");
            // Display the property name.
            Console.WriteLine("The {0} property exists in MyClass.", myPropInfo.Name);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("The property does not exist in MyClass." + e.Message);
        }
    }
}

En interne, cette propriété est référencée dans les métadonnées par le nom « Item ». Toute tentative d’obtenir PropertyInfo à l’aide de la réflexion doit spécifier ce nom interne afin de retourner correctement le PropertyInfo propriété.

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