PropertyInfo.GetValue Méthode

Définition

Retourne la valeur de propriété d’un objet spécifié.

Surcharges

Nom Description
GetValue(Object)

Retourne la valeur de propriété d’un objet spécifié.

GetValue(Object, Object[])

Retourne la valeur de propriété d’un objet spécifié avec des valeurs d’index facultatives pour les propriétés indexées.

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

En cas de substitution dans une classe dérivée, retourne la valeur de propriété d’un objet spécifié qui a les informations spécifiques à la culture, à l’index et à la liaison spécifiées.

GetValue(Object)

Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs

Retourne la valeur de propriété d’un objet spécifié.

public:
 System::Object ^ GetValue(System::Object ^ obj);
public object GetValue(object obj);
public object? GetValue(object? obj);
member this.GetValue : obj -> obj
Public Function GetValue (obj As Object) As Object

Paramètres

obj
Object

Objet dont la valeur de propriété est retournée.

Retours

Valeur de propriété de l’objet spécifié.

Exemples

L’exemple suivant définit une Planet classe qui a deux propriétés : Name, le nom de la planète ; et Distancela distance de la planète par rapport à la Terre. L’exemple instancie un Planet objet qui représente la planète Jupiter et le transmet à une GetPropertyValues méthode qui affiche des informations sur les propriétés et utilise la GetValue méthode pour obtenir la valeur de chaque Planet propriété.

using System;
using System.Reflection;

public class Planet
{
   private String planetName;
   private Double distanceFromEarth;
   
   public Planet(String name, Double distance)
   {
      planetName = name;
      distanceFromEarth = distance;
   } 

   public String Name
   { get { return planetName; } }
   
   public Double Distance 
   { get { return distanceFromEarth; }
     set { distanceFromEarth = value; } }
}

public class Example
{
   public static void Main()
   {
      Planet jupiter = new Planet("Jupiter", 3.65e08);
      GetPropertyValues(jupiter);
   }
   
   private static void GetPropertyValues(Object obj)
   {
      Type t = obj.GetType();
      Console.WriteLine("Type is: {0}", t.Name);
      PropertyInfo[] props = t.GetProperties();
      Console.WriteLine("Properties (N = {0}):", 
                        props.Length);
      foreach (var prop in props)
         if (prop.GetIndexParameters().Length == 0)
            Console.WriteLine("   {0} ({1}): {2}", prop.Name,
                              prop.PropertyType.Name,
                              prop.GetValue(obj));
         else
            Console.WriteLine("   {0} ({1}): <Indexed>", prop.Name,
                              prop.PropertyType.Name);
   }
}
// The example displays the following output:
//       Type is: Planet
//       Properties (N = 2):
//          Name (String): Jupiter
//          Distance (Double): 365000000
Imports System.Reflection

Public Class Planet
   Private planetName As String
   Private distanceFromEarth As Double
   
   Public Sub New(name As String, distance As Double)
      planetName = name
      distanceFromEarth = distance
   End Sub 

   Public ReadOnly Property Name As String
      Get
         Return planetName
      End Get
   End Property
   
   Public Property Distance As Double
      Get
         Return distanceFromEarth
      End Get
      Set
         distanceFromEarth = value
      End Set
   End Property
End Class

Module Example
   Public Sub Main()
      Dim jupiter As New Planet("Jupiter", 3.65e08)
      GetPropertyValues(jupiter)
   End Sub
   
   Private Sub GetPropertyValues(obj As Object)
      Dim t As Type = obj.GetType()
      Console.WriteLine("Type is: {0}", t.Name)
      Dim props() As PropertyInfo = t.GetProperties()
      Console.WriteLine("Properties (N = {0}):", 
                        props.Length)
      For Each prop In props
         If prop.GetIndexParameters().Length = 0 Then
            Console.WriteLine("   {0} ({1}): {2}", prop.Name,
                              prop.PropertyType.Name,
                              prop.GetValue(obj))
         Else
            Console.WriteLine("   {0} ({1}): <Indexed>", prop.Name,
                              prop.PropertyType.Name)
         End If                  
      Next                         
   End Sub
End Module
' The example displays the following output:
'       Type is: Planet
'       Properties (N = 2):
'          Name (String): Jupiter
'          Distance (Double): 365000000

Remarques

Vous appelez la GetValue(Object) surcharge pour récupérer la valeur d’une propriété non indexée ; si vous essayez de récupérer la valeur d’une propriété indexée, la méthode lève une TargetParameterCountException exception. Vous pouvez déterminer si une propriété est indexée ou non en appelant la GetIndexParameters méthode. Si la longueur du tableau retourné ParameterInfo est égale à zéro, la propriété n’est pas indexée.

Il s’agit d’une méthode pratique qui fournit une implémentation pour la méthode abstraite avec le BindingFlags paramètre défini BindingFlags.Defaultsur , l’ensemble Binder sur null, le tableau d’objets des valeurs d’index définie nullsur , et le CultureInfo jeu sur null.GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

S’applique à

GetValue(Object, Object[])

Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs

Retourne la valeur de propriété d’un objet spécifié avec des valeurs d’index facultatives pour les propriétés indexées.

public:
 virtual System::Object ^ GetValue(System::Object ^ obj, cli::array <System::Object ^> ^ index);
public virtual object GetValue(object obj, object[] index);
public virtual object? GetValue(object? obj, object?[]? index);
abstract member GetValue : obj * obj[] -> obj
override this.GetValue : obj * obj[] -> obj
Public Overridable Function GetValue (obj As Object, index As Object()) As Object

Paramètres

obj
Object

Objet dont la valeur de propriété est retournée.

index
Object[]

Valeurs d’index facultatives pour les propriétés indexées. Les index des propriétés indexées sont de base zéro. Cette valeur doit être null destinée aux propriétés non indexées.

Retours

Valeur de propriété de l’objet spécifié.

Implémente

Exceptions

Le index tableau ne contient pas le type d’arguments nécessaire.

- ou -

L’accesseur de get la propriété est introuvable.

L’objet ne correspond pas au type cible, ou une propriété est une propriété d’instance, mais obj elle est null.

Le nombre de paramètres dans index ne correspond pas au nombre de paramètres pris par la propriété indexée.

Il y avait une tentative illégale d’accès à une méthode privée ou protégée à l’intérieur d’une classe.

Une erreur s’est produite lors de la récupération de la valeur de la propriété. Par exemple, une valeur d’index spécifiée pour une propriété indexée est hors plage. La InnerException propriété indique la raison de l’erreur.

Exemples

L’exemple suivant montre comment obtenir la valeur d’une propriété indexée. La String.Chars[] propriété est la propriété par défaut (indexeur en C#) de la String classe.

using System;
using System.Reflection;

class Example
{
    public static void Main()
    {
        string test = "abcdefghijklmnopqrstuvwxyz";

        // Get a PropertyInfo object representing the Chars property.
        PropertyInfo pinfo = typeof(string).GetProperty("Chars");

        // Show the first, seventh, and last letters
        ShowIndividualCharacters(pinfo, test, 0, 6, test.Length - 1);

        // Show the complete string.
        Console.Write("The entire string: ");
        for (int x = 0; x < test.Length; x++)
        {
            Console.Write(pinfo.GetValue(test, new Object[] {x}));
        }
        Console.WriteLine();
    }

    static void ShowIndividualCharacters(PropertyInfo pinfo, 
                                         object value,
                                         params int[] indexes)
    {
       foreach (var index in indexes) 
          Console.WriteLine("Character in position {0,2}: '{1}'",
                            index, pinfo.GetValue(value, new object[] { index }));
       Console.WriteLine();                          
    }                                      
}
// The example displays the following output:
//    Character in position  0: 'a'
//    Character in position  6: 'g'
//    Character in position 25: 'z'
//    
//    The entire string: abcdefghijklmnopqrstuvwxyz
Imports System.Reflection

Module Example
    Sub Main()
        Dim test As String = "abcdefghijklmnopqrstuvwxyz"

        ' Get a PropertyInfo object representing the Chars property.
        Dim pinfo As PropertyInfo = GetType(String).GetProperty("Chars")

        ' Show the first, seventh, and last characters.
        ShowIndividualCharacters(pinfo, test, { 0, 6, test.Length - 1 })

        ' Show the complete string.
        Console.Write("The entire string: ")
        For x As Integer = 0 To test.Length - 1
            Console.Write(pinfo.GetValue(test, { x }))
        Next
        Console.WriteLine()
    End Sub

    Sub ShowIndividualCharacters(pinfo As PropertyInfo, 
                                 value As Object, 
                                 ParamArray indexes() As Integer)
       For Each index In indexes 
          Console.WriteLine("Character in position {0,2}: '{1}'",
                            index, pinfo.GetValue(value, { index }))
       Next
       Console.WriteLine()                          
    End Sub   
End Module
' The example displays the following output:
'       Character in position  0: 'a'
'       Character in position  6: 'g'
'       Character in position 25: 'z'
'       
'       The entire string: abcdefghijklmnopqrstuvwxyz

Remarques

Pour déterminer si une propriété est indexée, utilisez la GetIndexParameters méthode. Si le tableau résultant a 0 (zéro), la propriété n’est pas indexée.

Il s’agit d’une méthode pratique qui fournit une implémentation pour la méthode abstraite GetValue avec un BindingFlags paramètre de Default, l’ensemble Binder sur nullet l’ensemble CultureInfo sur null.

Étant donné que les propriétés statiques appartiennent au type, et non à des objets individuels, obtenez des propriétés statiques en passant null en tant qu’argument d’objet. Par exemple, utilisez le code suivant pour obtenir la propriété statique CurrentCulture de CultureInfo :

PropertyInfo CurCultProp =
    (typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
    CurCultProp.GetValue(null,null));

Pour utiliser la GetValue méthode, commencez par obtenir la classe Type. À partir de la Type, obtenir le PropertyInfo. À partir du PropertyInfo, utilisez la GetValue méthode.

Note

Cette méthode peut être utilisée pour accéder aux membres non publics si l’appelant a reçu ReflectionPermission l’indicateur ReflectionPermissionFlag.RestrictedMemberAccess et si l’ensemble d’octroi des membres non publics est limité au jeu d’octrois de l’appelant ou à un sous-ensemble de celui-ci. (Consultez Considérations relatives à la sécurité pour la réflexion.) Pour utiliser cette fonctionnalité, votre application doit cibler .NET Framework 3.5 ou version ultérieure.

S’applique à

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs
Source:
PropertyInfo.cs

En cas de substitution dans une classe dérivée, retourne la valeur de propriété d’un objet spécifié qui a les informations spécifiques à la culture, à l’index et à la liaison spécifiées.

public:
 abstract System::Object ^ GetValue(System::Object ^ obj, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ index, System::Globalization::CultureInfo ^ culture);
public abstract object? GetValue(object? obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? index, System.Globalization.CultureInfo? culture);
public abstract object GetValue(object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] index, System.Globalization.CultureInfo culture);
abstract member GetValue : obj * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj
Public MustOverride Function GetValue (obj As Object, invokeAttr As BindingFlags, binder As Binder, index As Object(), culture As CultureInfo) As Object

Paramètres

obj
Object

Objet dont la valeur de propriété est retournée.

invokeAttr
BindingFlags

Combinaison au niveau du bit des membres d’énumération suivants qui spécifient l’attribut d’appel : InvokeMethod, , CreateInstance, Static, GetField, SetField, , GetPropertyet SetProperty. Vous devez spécifier un attribut d’appel approprié. Par exemple, pour appeler un membre statique, définissez l’indicateur Static .

binder
Binder

Objet qui permet la liaison, la contrainte des types d’arguments, l’appel de membres et la récupération d’objets MemberInfo par réflexion. Si binder c’est nullle cas, le classeur par défaut est utilisé.

index
Object[]

Valeurs d’index facultatives pour les propriétés indexées. Cette valeur doit être null destinée aux propriétés non indexées.

culture
CultureInfo

Culture pour laquelle la ressource doit être localisée. Si la ressource n’est pas localisée pour cette culture, la Parent propriété est appelée successivement à la recherche d’une correspondance. Si cette valeur est null, les informations propres à la culture sont obtenues à partir de la CurrentUICulture propriété.

Retours

Valeur de propriété de l’objet spécifié.

Implémente

Exceptions

Le index tableau ne contient pas le type d’arguments nécessaire.

- ou -

L’accesseur de get la propriété est introuvable.

L’objet ne correspond pas au type cible, ou une propriété est une propriété d’instance, mais obj elle est null.

Le nombre de paramètres dans index ne correspond pas au nombre de paramètres pris par la propriété indexée.

Il y avait une tentative illégale d’accès à une méthode privée ou protégée à l’intérieur d’une classe.

Une erreur s’est produite lors de la récupération de la valeur de la propriété. Par exemple, une valeur d’index spécifiée pour une propriété indexée est hors plage. La InnerException propriété indique la raison de l’erreur.

Remarques

Pour déterminer si une propriété est indexée, utilisez la GetIndexParameters méthode. Si le tableau résultant a 0 (zéro), la propriété n’est pas indexée.

Étant donné que les propriétés statiques appartiennent au type, et non à des objets individuels, obtenez des propriétés statiques en passant null en tant qu’argument d’objet. Par exemple, utilisez le code suivant pour obtenir la propriété statique CurrentCulture de CultureInfo :

PropertyInfo CurCultProp =
       (typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
       CurCultProp.GetValue(null,null));

Pour utiliser la GetValue méthode, commencez par obtenir la classe Type. À partir de la Type, obtenir le PropertyInfo. À partir du PropertyInfo, utilisez la GetValue méthode.

Note

Cette méthode peut être utilisée pour accéder aux membres non publics si l’appelant a reçu ReflectionPermission l’indicateur ReflectionPermissionFlag.RestrictedMemberAccess et si l’ensemble d’octroi des membres non publics est limité au jeu d’octrois de l’appelant ou à un sous-ensemble de celui-ci. (Consultez Considérations relatives à la sécurité pour la réflexion.) Pour utiliser cette fonctionnalité, votre application doit cibler .NET Framework 3.5 ou version ultérieure.

Voir aussi

S’applique à