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
| Nome | Descrizione |
|---|---|
| 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) |
Quando sottoposto a override in una classe derivata, restituisce il valore della proprietà di un oggetto specificato con le informazioni specifiche per l'associazione, l'indice e le impostazioni cultura specificate. |
GetValue(Object)
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- 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 il cui valore della proprietà verrà restituito.
Valori restituiti
Valore della proprietà dell'oggetto specificato.
Esempio
L'esempio seguente definisce una Planet classe con due proprietà: Name, il nome del pianeta e Distance, la distanza del pianeta dalla Terra. Nell'esempio viene creata un'istanza di un Planet oggetto che rappresenta il pianeta Giove e lo passa a un GetPropertyValues metodo che visualizza informazioni sulle proprietà e usa il GetValue metodo per ottenere il 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
Chiamare 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 ParameterInfo è zero, la proprietà non viene indicizzata.
Si tratta di un metodo pratico che fornisce un'implementazione per il metodo astratto con il BindingFlags parametro impostato su BindingFlags.Default, la nullBinder matrice di oggetti dei valori di indice impostata nullsu e l'oggetto CultureInfo impostato su null.GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)
Si applica a
GetValue(Object, Object[])
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- 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 il cui valore della proprietà verrà restituito.
- index
- Object[]
Valori di indice facoltativi per le proprietà indicizzate. Gli indici delle proprietà indicizzate sono in base zero. Questo valore deve essere null per le proprietà non indicizzate.
Valori restituiti
Valore della proprietà dell'oggetto specificato.
Implementazioni
Eccezioni
La index matrice non contiene il tipo di argomenti necessari.
oppure
La funzione di accesso della get proprietà non viene trovata.
L'oggetto non corrisponde al tipo di destinazione o 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.
Si è verificato un tentativo non valido di accedere a un metodo privato o protetto all'interno di una classe.
Errore durante il recupero del valore della proprietà. Ad esempio, un valore di indice specificato per una proprietà indicizzata non è compreso nell'intervallo. La InnerException proprietà indica il motivo dell'errore.
Esempio
Nell'esempio seguente viene illustrato come ottenere il valore di una proprietà indicizzata. La String.Chars[] proprietà è la proprietà predefinita (l'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, utilizzare 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 astratto con un BindingFlags parametro di Default, l'oggetto Binder impostato su nulle l'oggetto CultureInfo impostato su null.GetValue
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 GetValue metodo , ottenere prima di tutto la classe Type.
TypeDa ottenere .PropertyInfo
PropertyInfoDa usare il GetValue metodo .
Annotazioni
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 concessioni dei membri non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere Security Considerations for Reflection.) Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.
Si applica a
GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
- Origine:
- PropertyInfo.cs
Quando sottoposto a override in una classe derivata, restituisce il valore della proprietà di un oggetto specificato con le informazioni specifiche per l'associazione, l'indice e le 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 il cui valore della proprietà verrà restituito.
- invokeAttr
- BindingFlags
Combinazione bit per bit dei membri di enumerazione seguenti che specificano l'attributo di chiamata: InvokeMethod, SetFieldCreateInstanceGetFieldStatic, GetProperty, e .SetProperty È necessario specificare un attributo di chiamata appropriato. Ad esempio, per richiamare un membro statico, impostare il Static flag .
- binder
- Binder
Oggetto che consente l'associazione, la coercizione dei tipi di argomento, la chiamata di membri e il recupero di MemberInfo oggetti tramite reflection. Se binder è null, viene usato il gestore di associazione predefinito.
- index
- Object[]
Valori di indice facoltativi per le proprietà indicizzate. Questo valore deve essere null per le proprietà non indicizzate.
- culture
- CultureInfo
Impostazioni cultura per cui la risorsa deve essere localizzata. Se la risorsa non è localizzata per queste impostazioni cultura, la Parent proprietà verrà chiamata successivamente nella ricerca di una corrispondenza. Se questo valore è null, le informazioni specifiche delle CurrentUICulture impostazioni cultura vengono ottenute dalla proprietà .
Valori restituiti
Valore della proprietà dell'oggetto specificato.
Implementazioni
Eccezioni
La index matrice non contiene il tipo di argomenti necessari.
oppure
La funzione di accesso della get proprietà non viene trovata.
L'oggetto non corrisponde al tipo di destinazione o 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.
Si è verificato un tentativo non valido di accedere a un metodo privato o protetto all'interno di una classe.
Errore durante il recupero del valore della proprietà. Ad esempio, un valore di indice specificato per una proprietà indicizzata non è compreso nell'intervallo. La InnerException proprietà indica il motivo dell'errore.
Commenti
Per determinare se una proprietà è indicizzata, utilizzare 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 GetValue metodo , ottenere prima di tutto la classe Type.
TypeDa ottenere .PropertyInfo
PropertyInfoDa usare il GetValue metodo .
Annotazioni
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 concessioni dei membri non pubblici è limitato al set di concessioni del chiamante o a un subset. Vedere Security Considerations for Reflection.) Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.