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, 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[])

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

.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