PropertyInfo.GetValue Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt den Eigenschaftswert eines angegebenen Objekts zurück.
Überlädt
GetValue(Object) |
Gibt den Eigenschaftswert eines angegebenen Objekts zurück. |
GetValue(Object, Object[]) |
Gibt den Wert der Eigenschaft für das angegebene Objekt mit optionalen Indexwerten für indizierte Eigenschaften fest. |
GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) |
Gibt beim Überschreiben in einer abgeleiteten Klasse den Eigenschaftswert eines angegebenen Objekts zurück, das die angegebene Bindung, den Index und kulturabhängige Informationen besitzt. |
GetValue(Object)
- Quelle:
- PropertyInfo.cs
- Quelle:
- PropertyInfo.cs
- Quelle:
- PropertyInfo.cs
Gibt den Eigenschaftswert eines angegebenen Objekts zurück.
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
Parameter
- obj
- Object
Das Objekt, dessen Eigenschaftswert zurückgegeben wird.
Gibt zurück
Der -Eigenschaftswert des angegebenen Objekts.
Beispiele
Im folgenden Beispiel wird eine Planet
Klasse definiert, die über zwei Eigenschaften verfügt: Name
, den Namen des Planeten und Distance
, die Entfernung des Planeten von der Erde. Das Beispiel instanziiert ein Planet
Objekt, das den Planeten Jupiter darstellt, und übergibt es an eine GetPropertyValues
Methode, die Informationen zu den Eigenschaften anzeigt, und verwendet die GetValue -Methode, um den Wert jeder Planet
Eigenschaft abzurufen.
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
Hinweise
Sie rufen die GetValue(Object) Überladung auf, um den Wert einer nicht indizierten Eigenschaft abzurufen. Wenn Sie versuchen, den Wert einer indizierten Eigenschaft abzurufen, löst die Methode eine Ausnahme aus TargetParameterCountException . Sie können bestimmen, ob eine Eigenschaft indiziert ist oder nicht, indem Sie die GetIndexParameters -Methode aufrufen. Wenn die Länge des zurückgegebenen ParameterInfo Arrays 0 ist, wird die Eigenschaft nicht indiziert.
Dies ist eine Convenience-Methode, die eine Implementierung für die abstrakte GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) Methode bereitstellt, wobei der BindingFlags Parameter auf BindingFlags.Defaultfestgelegt ist, der Binder auf null
festgelegt ist, das Objektarray der Indexwerte, die auf null
festgelegt sind, und die CultureInfo auf festgelegt ist null
.
Gilt für:
GetValue(Object, Object[])
- Quelle:
- PropertyInfo.cs
- Quelle:
- PropertyInfo.cs
- Quelle:
- PropertyInfo.cs
Gibt den Wert der Eigenschaft für das angegebene Objekt mit optionalen Indexwerten für indizierte Eigenschaften fest.
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
Parameter
- obj
- Object
Das Objekt, dessen Eigenschaftswert zurückgegeben wird.
- index
- Object[]
Optionale Indexwerte für indizierte Eigenschaften. Die Indizes indizierter Eigenschaften sind nullbasiert. Dieser Wert sollte bei nicht indizierten Eigenschaften null
sein.
Gibt zurück
Der -Eigenschaftswert des angegebenen Objekts.
Implementiert
Ausnahmen
Das index
-Array enthält Argumente, die nicht den benötigten Typ haben.
- oder -
Der get
-Accessor der Eigenschaft wurde nicht gefunden.
Das Objekt entspricht nicht dem Zieltyp, oder eine Eigenschaft ist eine Instanzeigenschaft, aber obj
ist null
.
Hinweis: In .NET für Windows Store-Apps oder der portablen Klassenbibliothek sollten Sie stattdessen abfangen Exception .
Die Anzahl von Parametern in index
entspricht nicht der Anzahl von Parametern, die die indizierte Eigenschaft akzeptiert.
Es wurde unzulässigerweise versucht, auf eine private oder geschützte Methode innerhalb einer Klasse zuzugreifen.
Hinweis: Erfassen Sie in .NET für Windows Store-Apps oder der portablen Klassenbibliothek stattdessen die Basisklassen-Ausnahme MemberAccessException.
Fehler beim Abrufen des Eigenschaftswerts. Beispielsweise liegt ein Indexwert, der für eine indizierte Eigenschaft angegeben ist, außerhalb des gültigen Bereichs. Die InnerException-Eigenschaft gibt die Ursache des Fehlers an.
Beispiele
Das folgende Beispiel zeigt, wie Sie den Wert einer indizierten Eigenschaft abrufen. Die String.Chars[] -Eigenschaft ist die Standardeigenschaft (der Indexer in C#) der String -Klasse.
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
Hinweise
Verwenden Sie die GetIndexParameters -Methode, um zu bestimmen, ob eine Eigenschaft indiziert ist. Wenn das resultierende Array über 0 (null) Elemente verfügt, wird die Eigenschaft nicht indiziert.
Dies ist eine Komfortmethode, die eine Implementierung für die abstrakte GetValue
Methode mit einem BindingFlags
Parameter von Default
bereitstellt, der Binder
auf null
festgelegt ist und auf CultureInfo
festgelegt ist null
.
Da statische Eigenschaften zum Typ gehören, nicht einzelne Objekte, rufen Sie statische Eigenschaften ab, indem Sie als Objektargument übergeben null
. Verwenden Sie beispielsweise den folgenden Code, um die statische CurrentCulture
Eigenschaft von CultureInfo
abzurufen:
PropertyInfo CurCultProp =
(typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
CurCultProp.GetValue(null,null));
Um die GetValue
-Methode zu verwenden, rufen Sie zuerst die -Klasse Type
ab. Rufen Sie aus die Type
ab PropertyInfo
. Verwenden Sie GetValue
aus die PropertyInfo
-Methode.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nicht öffentliche Member zuzugreifen, wenn dem Aufrufer das ReflectionPermissionFlag.RestrictedMemberAccess Flag gewährt ReflectionPermission wurde und wenn der Grant-Satz der nicht öffentlichen Member auf den Grant-Satz des Aufrufers oder eine Teilmenge davon beschränkt ist. (Weitere Informationen finden Sie unter Sicherheitsüberlegungen.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.
Gilt für:
GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)
- Quelle:
- PropertyInfo.cs
- Quelle:
- PropertyInfo.cs
- Quelle:
- PropertyInfo.cs
Gibt beim Überschreiben in einer abgeleiteten Klasse den Eigenschaftswert eines angegebenen Objekts zurück, das die angegebene Bindung, den Index und kulturabhängige Informationen besitzt.
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
Parameter
- obj
- Object
Das Objekt, dessen Eigenschaftswert zurückgegeben wird.
- invokeAttr
- BindingFlags
Eine bitweise Kombination der folgenden Enumerationsmember, die das Aufrufattribut angeben: InvokeMethod
, CreateInstance
, Static
, GetField
, SetField
, GetProperty
und SetProperty
. Es muss ein geeignetes Aufrufattribut angegeben werden. Um beispielsweise einen statischen Member aufzurufen, legen Sie das Static
-Flag fest.
- binder
- Binder
Ein Objekt, das die Bindung, die Umwandlung von Argumenttypen, das Aufrufen von Membern und das Abrufen von MemberInfo-Objekten über Reflektion ermöglicht. Wenn binder
den Wert null
aufweist, wird der Standardbinder verwendet.
- index
- Object[]
Optionale Indexwerte für indizierte Eigenschaften. Dieser Wert sollte bei nicht indizierten Eigenschaften null
sein.
- culture
- CultureInfo
Die Kultur, für die die Ressource lokalisiert werden soll. Die Parent-Eigenschaft wird in der Folge für die Suche nach einer Übereinstimmung aufgerufen, wenn die Ressource nicht für diese Kultur lokalisiert wurde. Wenn dieser Wert null
ist, wird die kulturspezifische Information aus der CurrentUICulture-Eigenschaft abgerufen.
Gibt zurück
Der -Eigenschaftswert des angegebenen Objekts.
Implementiert
Ausnahmen
Das index
-Array enthält Argumente, die nicht den benötigten Typ haben.
- oder -
Der get
-Accessor der Eigenschaft wurde nicht gefunden.
Das Objekt entspricht nicht dem Zieltyp, oder eine Eigenschaft ist eine Instanzeigenschaft, aber obj
ist null
.
Die Anzahl von Parametern in index
entspricht nicht der Anzahl von Parametern, die die indizierte Eigenschaft akzeptiert.
Es wurde unzulässigerweise versucht, auf eine private oder geschützte Methode innerhalb einer Klasse zuzugreifen.
Fehler beim Abrufen des Eigenschaftswerts. Beispielsweise liegt ein Indexwert, der für eine indizierte Eigenschaft angegeben ist, außerhalb des gültigen Bereichs. Die InnerException-Eigenschaft gibt die Ursache des Fehlers an.
Hinweise
Verwenden Sie die GetIndexParameters -Methode, um zu bestimmen, ob eine Eigenschaft indiziert ist. Wenn das resultierende Array über 0 (null) Elemente verfügt, wird die Eigenschaft nicht indiziert.
Da statische Eigenschaften zum Typ gehören, nicht einzelne Objekte, rufen Sie statische Eigenschaften ab, indem Sie als Objektargument übergeben null
. Verwenden Sie beispielsweise den folgenden Code, um die statische CurrentCulture
Eigenschaft von CultureInfo
abzurufen:
PropertyInfo CurCultProp =
(typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
CurCultProp.GetValue(null,null));
Um die GetValue
-Methode zu verwenden, rufen Sie zuerst die -Klasse Type
ab. Rufen Sie aus die Type
ab PropertyInfo
. Verwenden Sie GetValue
aus die PropertyInfo
-Methode.
Hinweis
Ab .NET Framework 2.0 kann diese Methode verwendet werden, um auf nicht öffentliche Member zuzugreifen, wenn dem Aufrufer das ReflectionPermissionFlag.RestrictedMemberAccess Flag gewährt ReflectionPermission wurde und wenn der Grant-Satz der nicht öffentlichen Member auf den Grant-Satz des Aufrufers oder eine Teilmenge davon beschränkt ist. (Weitere Informationen finden Sie unter Sicherheitsüberlegungen.) Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher ausgerichtet sein.