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