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.GetProperties, méthode (BindingFlags)

 

En cas de substitution dans une classe dérivée, recherche les propriétés du Type actuel, à l'aide des contraintes de liaison spécifiées.

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

public abstract PropertyInfo[] GetProperties(
	BindingFlags bindingAttr
)

Paramètres

bindingAttr

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

Tableau d'objets PropertyInfo représentant toutes les propriétés du Type actuel qui correspondent aux contraintes de liaison spécifiées.

ou

Tableau vide du type PropertyInfo si le Type actuel n'a pas de propriétés ou si aucune des propriétés ne correspond aux contraintes de liaison.

Une propriété est considérée comme publique à 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.

Le GetProperties méthode ne retourne pas les propriétés dans un ordre particulier, tel qu'alphabétique ou l'ordre de déclaration.Votre code ne doit pas varient en fonction de l'ordre dans lequel les propriétés sont retournées, car cet ordre varie.

Les éléments suivants BindingFlags filtre indicateurs peuvent être utilisés pour définir ce qui est imbriqué types à inclure dans la recherche :

  • Vous devez spécifier BindingFlags.Instance ou 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 les propriétés non publiques (c'est-à-dire les propriétés privées, internes et protégées) dans la recherche.Seuls protégés et des propriétés internes sur les classes de base sont retournées ; propriétés privées sur les classes de base ne sont pas retournées.

  • Spécifiez BindingFlags.FlattenHierarchy pour 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 indicateurs de modification peuvent être utilisés pour modifier le fonctionnement de la recherche :

  • BindingFlags.DeclaredOnly Pour 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.

Une propriété est considérée comme publique à 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 t: System.type actuel représente un type générique construit, cette méthode retourne le PropertyInfo objets 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 une méthode générique, cette méthode recherche les propriétés de la contrainte de classe.

L'exemple suivant définit une classe nommée PropertyClass qui inclut six propriétés : deux sont publics, une est privée, un est protégé, l'autre est interne (Friend en Visual Basic), et si un est interne (Protected Friend en Visual Basic).Il affiche ensuite des informations de propriété de base (le nom de propriété et le type, s'il est en lecture/écriture et la visibilité de ses get et set accesseurs) pour les propriétés qui correspondent aux contraintes de liaison spécifiées.

using System;
using System.Reflection;

// Create a class having six properties.
public class PropertyClass
{
    public String Property1
    {
        get { return "hello"; }
    }

    public String Property2
    {
        get { return "hello"; }
    }

    protected String Property3
    {
        get { return "hello"; }
    }

    private Int32 Property4
    {
        get { return 32; }
    }

    internal String Property5
    {
       get { return "value"; }
    }

    protected internal String Property6
    {
       get { return "value"; }
    }
}

public class Example
{
    public static void Main() 
    {
        Type t = typeof(PropertyClass);
        // Get the public properties.
        PropertyInfo[] propInfos = t.GetProperties(BindingFlags.Public|BindingFlags.Instance);
        Console.WriteLine("The number of public properties: {0}.\n",
                          propInfos.Length);
        // Display the public properties.
        DisplayPropertyInfo(propInfos);

        // Get the nonpublic properties.
        PropertyInfo[] propInfos1 = t.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance);
        Console.WriteLine("The number of non-public properties: {0}.\n",
                          propInfos1.Length);
        // Display all the nonpublic properties.
        DisplayPropertyInfo(propInfos1);
    }

    public static void DisplayPropertyInfo(PropertyInfo[] propInfos)
    {
        // Display information for all properties.
        foreach (var propInfo in propInfos) {
            bool readable = propInfo.CanRead;
            bool writable = propInfo.CanWrite;

            Console.WriteLine("   Property name: {0}", propInfo.Name);
            Console.WriteLine("   Property type: {0}", propInfo.PropertyType);
            Console.WriteLine("   Read-Write:    {0}", readable & writable);
            if (readable) {
               MethodInfo getAccessor = propInfo.GetMethod;
               Console.WriteLine("   Visibility:    {0}",
                                 GetVisibility(getAccessor));
            }
            if (writable) {
               MethodInfo setAccessor = propInfo.SetMethod;
               Console.WriteLine("   Visibility:    {0}",
                                 GetVisibility(setAccessor));
            }
            Console.WriteLine();
        }
    }

    public static String GetVisibility(MethodInfo accessor)
    {
       if (accessor.IsPublic)
          return "Public";
       else if (accessor.IsPrivate)
          return "Private";
       else if (accessor.IsFamily)
          return "Protected";
       else if (accessor.IsAssembly)
          return "Internal/Friend";
       else
          return "Protected Internal/Friend";
    }
}
// The example displays the following output:
//       The number of public properties: 2.
//
//          Property name: Property1
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Public
//
//          Property name: Property2
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Public
//
//       The number of non-public properties: 4.
//
//          Property name: Property3
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Protected
//
//          Property name: Property4
//          Property type: System.Int32
//          Read-Write:    False
//          Visibility:    Private
//
//          Property name: Property5
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Internal/Friend
//
//          Property name: Property6
//          Property type: System.String
//          Read-Write:    False
//          Visibility:    Protected Internal/Friend

.NET Framework
Disponible depuis 1.1
Portable Class Library
Pris en charge dans : portable .NET platforms
Silverlight
Disponible depuis 2.0
Windows Phone Silverlight
Disponible depuis 7.0
Retour au début
Afficher: