Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Type.GetProperty, méthode (String, Type, Type[], ParameterModifier[])

Recherche la propriété publique spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)
public PropertyInfo GetProperty(
	string name,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)

Paramètres

name
Type : System.String
Chaîne contenant le nom de la propriété publique à obtenir.
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é publique qui répond aux spécifications, si elle est trouvée ; sinon, null.

Implémentations

_Type.GetProperty(String, Type, Type[], ParameterModifier[])
Exception Condition
AmbiguousMatchException

La recherche a trouvé plus d'une propriété présentant le nom spécifié et correspondant aux types d'arguments et modificateurs spécifiés.

ArgumentNullException

name est null.

ou

types est 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 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.

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

La recherche de name respecte la casse. La recherche inclut les propriétés d'instance statiques publiques et publiques.

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.

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 a un indexeur nommé Chars. Les propriétés indexées créées à l'aide de langages autres que C# peuvent également avoir des noms différents de 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 obtient un objet Type correspondant à MyPropertyClass et la propriété indexée de cette classe est récupérée à l'aide des arguments passés à la méthode GetProperty.


using System;
using System.Reflection;
public class MyPropertyClass
{
    private int [,] myPropertyArray = new int[10,10]; 
    // Declare an indexer.
    public int this [int i,int j]
    {
        get 
        {
            return myPropertyArray[i,j];
        }
        set 
        {
            myPropertyArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main()
    {
        try
        {
            Type myType=typeof(MyPropertyClass);
            Type[] myTypeArray = new Type[2];
            // Create an instance of the Type array representing the number, order 
            // and type of the parameters for the property.
            myTypeArray.SetValue(typeof(int),0);
            myTypeArray.SetValue(typeof(int),1);
            // Search for the indexed property whose parameters match the
            // specified argument types and modifiers.
            PropertyInfo myPropertyInfo = myType.GetProperty("Item",
                typeof(int),myTypeArray,null);
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name + 
                " has a property type of " + myPropertyInfo.PropertyType);
         }
        catch(Exception ex)
        {
            Console.WriteLine("An exception occurred " + ex.Message);
        }
    }
}


.NET Framework

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

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

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.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ