PropertyInfo.GetValue Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce il valore della proprietà di un oggetto specificato.
Overload
GetValue(Object) |
Restituisce il valore della proprietà di un oggetto specificato. |
GetValue(Object, Object[]) |
Restituisce il valore della proprietà di un oggetto specificato, con valori di indice facoltativi per le proprietà indicizzate. |
GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) |
Una volta eseguito l'override in una classe derivata, restituisce il valore di proprietà di un oggetto specificato con l'associazione, l'indice e le informazioni specifiche delle impostazioni cultura specificate. |
GetValue(Object)
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
Restituisce il valore della proprietà di un oggetto specificato.
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
Parametri
- obj
- Object
Oggetto di cui verrà restituito il valore della proprietà.
Restituisce
Valore della proprietà dell'oggetto specificato.
Esempio
Nell'esempio seguente viene definita una Planet
classe con due proprietà: Name
, il nome del pianeta e Distance
la distanza del pianeta dalla Terra. L'esempio crea un'istanza di un oggetto che rappresenta il pianeta Giove e lo passa a un Planet
GetPropertyValues
metodo che visualizza informazioni sulle proprietà e usa il metodo per ottenere il GetValue valore di ogni Planet
proprietà.
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
Commenti
Si chiama l'overload GetValue(Object) per recuperare il valore di una proprietà non indicizzata. Se si tenta di recuperare il valore di una proprietà indicizzata, il metodo genera un'eccezione TargetParameterCountException . È possibile determinare se una proprietà è indicizzata o meno chiamando il GetIndexParameters metodo. Se la lunghezza della matrice restituita è zero, la proprietà non viene indicizzata ParameterInfo .
Si tratta di un metodo pratico che fornisce un'implementazione per il metodo astratta con il BindingFlags parametro impostato su BindingFlags.Default, l'insieme Binder su null
, la matrice di oggetti dei valori di indice impostata su null
e il CultureInfo set su null
.GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)
Si applica a
GetValue(Object, Object[])
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
Restituisce il valore della proprietà di un oggetto specificato, con valori di indice facoltativi per le proprietà indicizzate.
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
Parametri
- obj
- Object
Oggetto di cui verrà restituito il valore della proprietà.
- index
- Object[]
Valori di indice facoltativi per le proprietà indicizzate. Gli indici delle proprietà indicizzate sono in base zero. Il valore deve essere null
per le proprietà non indicizzate.
Restituisce
Valore della proprietà dell'oggetto specificato.
Implementazioni
Eccezioni
La matrice index
non contiene il tipo di argomenti necessari.
-oppure-
La funzione di accesso get
della proprietà non è stata trovata.
L'oggetto non corrisponde al tipo di destinazione oppure una proprietà è una proprietà dell'istanza, ma obj
è null
.
Nota: in .NET per le app di Windows Store o la libreria di classi portabile, rilevareException invece.
Il numero di parametri in index
non corrisponde al numero di parametri accettati dalla proprietà indicizzata.
È stato effettuato un tentativo non valido di accedere a un metodo privato o protetto all'interno di una classe.
Nota: in .NET per le app di Windows Store o la libreria di classi portabili, rilevare invece l'eccezione della classe di base, , MemberAccessException.
Si è verificato un errore durante il recupero del valore della proprietà. Ad esempio, un valore di indice specificato per una proprietà indicizzata non è compreso nell'intervallo. La causa di questo errore è indicata dalla proprietà InnerException.
Esempio
Nell'esempio seguente viene illustrato come ottenere il valore di una proprietà indicizzata. La String.Chars[] proprietà è la proprietà predefinita (indicizzatore in C#) della 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
Commenti
Per determinare se una proprietà è indicizzata, usare il GetIndexParameters metodo . Se la matrice risultante ha 0 (zero), la proprietà non viene indicizzata.
Si tratta di un metodo pratico che fornisce un'implementazione per il metodo astratta GetValue
con un BindingFlags
parametro di Default
, il Binder
set su null
e il CultureInfo
set su null
.
Poiché le proprietà statiche appartengono al tipo, non ai singoli oggetti, ottenere proprietà statiche passando null
come argomento dell'oggetto. Ad esempio, usare il codice seguente per ottenere la proprietà statica CurrentCulture
di CultureInfo
:
PropertyInfo CurCultProp =
(typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
CurCultProp.GetValue(null,null));
Per usare il metodo, ottenere prima di tutto GetValue
la classe Type
. Dall'oggetto , ottenere l'oggetto Type
PropertyInfo
.
PropertyInfo
Da , usare il GetValue
metodo .
Nota
A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a membri non pubblici se il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag e se il set di concessione dei membri non pubblici è limitato al set di concessione del chiamante o a un subset. Vedere Considerazioni sulla sicurezza per Reflection. Per usare questa funzionalità, l'applicazione deve essere di destinazione .NET Framework 3.5 o successiva.
Si applica a
GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
Una volta eseguito l'override in una classe derivata, restituisce il valore di proprietà di un oggetto specificato con l'associazione, l'indice e le informazioni specifiche delle impostazioni cultura specificate.
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
Parametri
- obj
- Object
Oggetto di cui verrà restituito il valore della proprietà.
- invokeAttr
- BindingFlags
Una combinazione bit per bit dei seguenti membri di enumerazione che specificano l'attributo di chiamata: InvokeMethod
, CreateInstance
, Static
, GetField
, SetField
, GetProperty
e SetProperty
. È necessario specificare un attributo di chiamata appropriato. Ad esempio, per richiamare un membro statico, impostare il flag Static
.
- binder
- Binder
Oggetto che consente l'associazione, la coercizione di tipi di argomento, la chiamata di membri e il recupero di oggetti MemberInfo tramite la reflection. Se binder
è null
, verrà usato il binder predefinito.
- index
- Object[]
Valori di indice facoltativi per le proprietà indicizzate. Il valore deve essere null
per le proprietà non indicizzate.
- culture
- CultureInfo
Impostazioni cultura in base alle quali deve essere localizzata la risorsa. Se la risorsa non viene localizzata con queste impostazioni cultura, la proprietà Parent verrà successivamente chiamata in cerca di una corrispondenza. Se questo valore è null
, le informazioni specifiche delle impostazioni cultura vengono ottenute dalla proprietà CurrentUICulture.
Restituisce
Valore della proprietà dell'oggetto specificato.
Implementazioni
Eccezioni
La matrice index
non contiene il tipo di argomenti necessari.
-oppure-
La funzione di accesso get
della proprietà non è stata trovata.
L'oggetto non corrisponde al tipo di destinazione oppure una proprietà è una proprietà dell'istanza, ma obj
è null
.
Il numero di parametri in index
non corrisponde al numero di parametri accettati dalla proprietà indicizzata.
È stato effettuato un tentativo non valido di accedere a un metodo privato o protetto all'interno di una classe.
Si è verificato un errore durante il recupero del valore della proprietà. Ad esempio, un valore di indice specificato per una proprietà indicizzata non è compreso nell'intervallo. La causa di questo errore è indicata dalla proprietà InnerException.
Commenti
Per determinare se una proprietà è indicizzata, usare il GetIndexParameters metodo . Se la matrice risultante ha 0 (zero), la proprietà non viene indicizzata.
Poiché le proprietà statiche appartengono al tipo, non ai singoli oggetti, ottenere proprietà statiche passando null
come argomento dell'oggetto. Ad esempio, usare il codice seguente per ottenere la proprietà statica CurrentCulture
di CultureInfo
:
PropertyInfo CurCultProp =
(typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
CurCultProp.GetValue(null,null));
Per usare il metodo, ottenere prima di tutto GetValue
la classe Type
. Dall'oggetto , ottenere l'oggetto Type
PropertyInfo
.
PropertyInfo
Da , usare il GetValue
metodo .
Nota
A partire da .NET Framework 2.0, questo metodo può essere usato per accedere a membri non pubblici se il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag e se il set di concessione dei membri non pubblici è limitato al set di concessione del chiamante o a un subset. Vedere Considerazioni sulla sicurezza per Reflection. Per usare questa funzionalità, l'applicazione deve essere di destinazione .NET Framework 3.5 o successiva.