Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Type.GetProperty, méthode (String, BindingFlags)

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.

Implémentations

_Type.GetProperty(String, BindingFlags)
IReflect.GetProperty(String, BindingFlags)

ExceptionCondition
AmbiguousMatchException

Il existe plusieurs propriétés portant le nom spécifié et correspondant 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 par rapport à la réflexion si au moins l'un de ses accesseurs 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 d' Or) pour l'obtenir.

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

  • Spécifiez BindingFlags.NonPublic pour inclure des propriétés non publiques (c'est-à-dire des propriétés privées, internes et protégées) dans la recherche.

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

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

  • BindingFlags.IgnoreCase pour ignorer la casse de name.

  • BindingFlags.DeclaredOnly pour rechercher uniquement les propriétés déclarées sur Type et non les propriétés qui ont été simplement héritées.

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

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

Les 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 pas le même nombre de paramètres. Pour résoudre l'ambiguïté, utilisez une surcharge de la méthode GetProperty qui spécifie des types de paramètre.

  • Un type dérivé déclare une propriété qui masque une propriété héritée avec le même nom, en utilisant le modificateur new (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.

Indexeurs et propriétés par défaut

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 d'être la 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 égal à 3. Vous pouvez surcharger la propriété.

En C#, cette fonctionnalité est appelée "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 sous la forme d'une propriété indexée nommée "Item". Toutefois, un développeur de bibliothèques de classes peut utiliser l'attribut IndexerNameAttribute pour modifier le nom de l'indexeur dans les métadonnées. Par exemple, la classe String possède un indexeur nommé Chars. Les propriétés indexées créées à l'aide d'autres langages que C# peuvent également porter des noms différents d'Item.

Pour déterminer si un type a une propriété par défaut, utilisez la méthode GetCustomAttributes(Type, Boolean) pour tester l'attribut DefaultMemberAttribute. Si le type a DefaultMemberAttribute, la propriété MemberName 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 en affiche le nom 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

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Bibliothèque de classes portable

Pris en charge dans : Bibliothèque de classes portable

.NET pour les applications Windows Phone

Pris en charge dans : Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

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.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft