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, Type)

 

Date de publication : novembre 2016

Recherche la propriété publique à l'aide du nom et du type de retour spécifiés.

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

public PropertyInfo GetProperty(
	string name,
	Type returnType
)

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

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

Plusieurs propriétés ont été trouvées avec le nom spécifié.

ArgumentNullException

name est null, ou returnType est null.

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.

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

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.

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 définit une classe avec une propriété et récupère le nom et le type de la propriété.


using System;
using System.Reflection;

class MyClass1
{
    String myMessage="Hello World.";
    public string MyProperty1
    {
        get
        {			
            return myMessage;
        }
        set
        {
            myMessage =value;
        }			
    }
}
class TestClass
{
    static void Main()
    {
        try
        {	
            Type myType = typeof(MyClass1);
            // Get the PropertyInfo object representing MyProperty1. 
            PropertyInfo myStringProperties1 = myType.GetProperty("MyProperty1",
                typeof(string));
            Console.WriteLine("The name of the first property of MyClass1 is {0}.", myStringProperties1.Name);
            Console.WriteLine("The type of the first property of MyClass1 is {0}.", myStringProperties1.PropertyType);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException :"+e.Message);

        }
        catch(AmbiguousMatchException e)
        {
            Console.WriteLine("AmbiguousMatchException :"+e.Message);
        }
        catch(NullReferenceException e)
        {
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
	//Output:
	//The name of the first property of MyClass1 is MyProperty1.
	//The type of the first property of MyClass1 is System.String.
    }
}

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