PropertyInfo.GetValue Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne la valeur de la propriété d'un objet spécifié.
Surcharges
GetValue(Object) |
Retourne la valeur de la propriété d'un objet spécifié. |
GetValue(Object, Object[]) |
Retourne la valeur de la 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 possède la liaison, l’index et les informations propres à la culture spécifiés. |
GetValue(Object)
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
Retourne la valeur de la 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é sera retournée.
Retours
Valeur de la 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 Distance
, la distance de la planète à 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 GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) avec le BindingFlags paramètre défini BindingFlags.Defaultsur , la Binder valeur null
définie sur , le tableau d’objets de valeurs d’index défini sur null
et le CultureInfo défini sur null
.
S’applique à
GetValue(Object, Object[])
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
- Source:
- PropertyInfo.cs
Retourne la valeur de la 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é sera retournée.
- index
- Object[]
Valeurs d'index facultatives pour les propriétés indexées. Les index des propriétés indexées sont en base zéro. Cette valeur doit être null
pour les propriétés non indexées.
Retours
Valeur de la propriété de l'objet spécifié.
Implémente
Exceptions
Le tableau index
ne contient pas le type d’arguments requis.
- ou -
L’accesseur get
de 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
a la valeur null
.
Remarque : Dans .NET pour les applications du Windows Store ou la bibliothèque de classes portable, interceptez Exception à la place.
Le nombre de paramètres dans index
ne correspond pas au nombre de paramètres que prend la propriété indexée.
Tentative non autorisée d’accéder à une méthode privée ou protégée à l’intérieur d’une classe.
Remarque : Dans .NET pour les applications du Windows Store ou la bibliothèque de classes portable, interceptez l’exception de classe de base, MemberAccessException, à la place.
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 limites. La propriété InnerException 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 (l’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 contient 0 (zéro) éléments, 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
, défini null
Binder
sur et défini 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
comme 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 Type
, obtenez le PropertyInfo
. À partir de , PropertyInfo
utilisez la GetValue
méthode .
Notes
À compter de .NET Framework 2.0, 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 le jeu d’octrois 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
En cas de substitution dans une classe dérivée, retourne la valeur de propriété d’un objet spécifié qui possède la liaison, l’index et les informations propres à la culture spécifiés.
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é sera retournée.
- invokeAttr
- BindingFlags
Combinaison d'opérations de bits des membres suivants de l'énumération qui spécifie l'attribut d'appel : InvokeMethod
, CreateInstance
, Static
, GetField
, SetField
, GetProperty
, et 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 active la liaison, la contrainte de types d'arguments, l'appel des membres et la récupération d'objets MemberInfo par la réflexion. Si binder
est null
, le binder par défaut est utilisé.
- index
- Object[]
Valeurs d'index facultatives pour les propriétés indexées. Cette valeur doit être null
pour les 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 propriété Parent sera appelée pour rechercher une correspondance. Si cette valeur est null
, les informations spécifiques à la culture sont obtenues à partir de la propriété CurrentUICulture.
Retours
Valeur de la propriété de l'objet spécifié.
Implémente
Exceptions
Le tableau index
ne contient pas le type d’arguments requis.
- ou -
L’accesseur get
de 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
a la valeur null
.
Le nombre de paramètres dans index
ne correspond pas au nombre de paramètres que prend la propriété indexée.
Tentative non autorisée d’accéder à 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 limites. La propriété InnerException 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 contient 0 (zéro) éléments, 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
comme 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 Type
, obtenez le PropertyInfo
. À partir de , PropertyInfo
utilisez la GetValue
méthode .
Notes
À compter de .NET Framework 2.0, 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 le jeu d’octrois 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.