PropertyInfo.GetValue PropertyInfo.GetValue PropertyInfo.GetValue PropertyInfo.GetValue Method

Definition

Gibt den Eigenschaftswert eines angegebenen Objekts zurück.Returns the property value of a specified object.

Überlädt

GetValue(Object) GetValue(Object) GetValue(Object) GetValue(Object)

Gibt den Eigenschaftswert eines angegebenen Objekts zurück.Returns the property value of a specified object.

GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[])

Gibt den Wert der Eigenschaft für das angegebene Objekt mit optionalen Indexwerten für indizierte Eigenschaften fest.Returns the property value of a specified object with optional index values for indexed properties.

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) 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.When overridden in a derived class, returns the property value of a specified object that has the specified binding, index, and culture-specific information.

GetValue(Object) GetValue(Object) GetValue(Object) GetValue(Object)

Gibt den Eigenschaftswert eines angegebenen Objekts zurück.Returns the property value of a specified object.

public:
 System::Object ^ GetValue(System::Object ^ obj);
public object GetValue (object obj);
member this.GetValue : obj -> obj
Public Function GetValue (obj As Object) As Object

Parameter

obj
Object Object Object Object

Das Objekt, dessen Eigenschaftswert zurückgegeben wird.The object whose property value will be returned.

Gibt zurück

Der -Eigenschaftswert des angegebenen Objekts.The property value of the specified object.

Beispiele

Das folgende Beispiel definiert eine Planet Klasse, die zwei Eigenschaften verfügt: Name, den Namen der weltweit; und Distance, des Planeten Abstand von der Erde.The following example defines a Planet class that has two properties: Name, the name of the planet; and Distance, the planet's distance from Earth. Das Beispiel instanziiert ein Planet -Objekt, das weltweit Jupiter darstellt, und übergibt es an eine GetPropertyValues -Methode, die Anzeige von Informationen über die Eigenschaften und verwendet die GetValue -Methode zum Abrufen des Wertes für jedes Planet Eigenschaft.The example instantiates a Planet object that represents the planet Jupiter and passes it to a GetPropertyValues method that displays information about the properties and uses the GetValue method to get the value of each Planet property.

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

Rufen Sie die GetValue(Object) überladen, um den Wert einer nicht indizierten Eigenschaft abzurufen, wenn Sie versuchen, den Wert einer indizierten Eigenschaft abzurufen, löst die Methode eine TargetParameterCountException Ausnahme.You call the GetValue(Object) overload to retrieve the value of a non-indexed property; if you try to retrieve the value of an indexed property, the method throws a TargetParameterCountException exception. Sie können bestimmen, ob eine Eigenschaft indiziert ist oder nicht durch den Aufruf der GetIndexParameters Methode.You can determine whether a property is indexed or not by calling the GetIndexParameters method. Wenn die Länge des zurückgegebenen ParameterInfo Array NULL ist, wird die Eigenschaft nicht indiziert.If the length of the returned ParameterInfo array is zero, the property is not indexed.

Dies ist eine Hilfsmethode, die eine Implementierung der abstrakten bietet GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) -Methode mit der BindingFlags Parametersatz zu BindingFlags.Default, wird die Binder festgelegt null, der Object-Array der Indexwerte festgelegt null, und die CultureInfo festgelegt null.This is a convenience method that provides an implementation for the abstract GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) method with the BindingFlags parameter set to BindingFlags.Default, the Binder set to null, the object array of index values set to null, and the CultureInfo set to null.

GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[]) GetValue(Object, Object[])

Gibt den Wert der Eigenschaft für das angegebene Objekt mit optionalen Indexwerten für indizierte Eigenschaften fest.Returns the property value of a specified object with optional index values for indexed properties.

public:
 virtual System::Object ^ GetValue(System::Object ^ obj, cli::array <System::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 Object Object Object

Das Objekt, dessen Eigenschaftswert zurückgegeben wird.The object whose property value will be returned.

index
Object[]

Optionale Indexwerte für indizierte Eigenschaften.Optional index values for indexed properties. Die Indizes indizierter Eigenschaften sind nullbasiert.The indexes of indexed properties are zero-based. Dieser Wert sollte bei nicht indizierten Eigenschaften null sein.This value should be null for non-indexed properties.

Gibt zurück

Der -Eigenschaftswert des angegebenen Objekts.The property value of the specified object.

Implementiert

Ausnahmen

Das index-Array enthält Argumente, die nicht den benötigten Typ haben.The index array does not contain the type of arguments needed.

- oder --or- Der get-Accessor der Eigenschaft wurde nicht gefunden.The property's get accessor is not found.

Fangen Sie in .NET für Windows Store-Apps oder der portablen Klassenbibliothek stattdessen Exception ab.In the .NET for Windows Store apps or the Portable Class Library, catch Exception instead.

Das Objekt entspricht nicht dem Zieltyp, oder eine Eigenschaft ist eine Instanzeigenschaft, aber obj ist null.The object does not match the target type, or a property is an instance property but obj is null.

Die Anzahl von Parametern in index entspricht nicht der Anzahl von Parametern, die die indizierte Eigenschaft akzeptiert.The number of parameters in index does not match the number of parameters the indexed property takes.

Fangen Sie in .NET für Windows Store-Apps oder der portablen Klassenbibliothek stattdessen die Basisklassenausnahme MemberAccessException ab.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, MemberAccessException, instead.

Es wurde unzulässigerweise versucht, auf eine private oder geschützte Methode innerhalb einer Klasse zuzugreifen.There was an illegal attempt to access a private or protected method inside a class.

Fehler beim Abrufen des Eigenschaftswerts.An error occurred while retrieving the property value. Beispielsweise liegt ein Indexwert, der für eine indizierte Eigenschaft angegeben ist, außerhalb des gültigen Bereichs.For example, an index value specified for an indexed property is out of range. Die InnerException-Eigenschaft gibt die Ursache des Fehlers an.The InnerException property indicates the reason for the error.

Beispiele

Das folgende Beispiel zeigt, wie Sie den Wert einer indizierten Eigenschaft zu erhalten.The following example shows how to get the value of an indexed property. Die String.Chars[Range] Eigenschaft ist die Standardeigenschaft (Indexer in c#), der die String Klasse.The String.Chars[Range] property is the default property (the indexer in C#) of the String class.

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

Um zu bestimmen, ob eine Eigenschaft indiziert ist, verwenden Sie die GetIndexParameters Methode.To determine whether a property is indexed, use the GetIndexParameters method. Verfügt das resultierende Array 0 (null) Elemente, die Eigenschaft ist nicht indiziert.If the resulting array has 0 (zero) elements, the property is not indexed.

Dies ist eine Hilfsmethode, die eine Implementierung für die abstrakte bereitstellt GetValue -Methode mit einer BindingFlags Parameter der Default, die Binder festgelegt null, und die CultureInfo festgelegt null.This is a convenience method that provides an implementation for the abstract GetValue method with a BindingFlags parameter of Default, the Binder set to null, and the CultureInfo set to null.

Da in den Typ nicht für einzelne Objekte, statische Eigenschaften gehören, erhalten Sie statische Eigenschaften, indem übergeben null als Objektargument.Because static properties belong to the type, not individual objects, get static properties by passing null as the object argument. Verwenden Sie z. B. den folgenden Code zum Abrufen der statischen CurrentCulture Eigenschaft CultureInfo :For example, use the following code to get the static CurrentCulture property of CultureInfo :

PropertyInfo CurCultProp =   
    (typeof(CultureInfo)).GetProperty("CurrentCulture");   
Console.WriteLine("CurrCult: " +  
    CurCultProp.GetValue(null,null));  

Verwenden der GetValue -Methode, rufen Sie zunächst die Klasse Type.To use the GetValue method, first get the class Type. Von der Type, erhalten die PropertyInfo.From the Type, get the PropertyInfo. Von der PropertyInfo, verwenden Sie die GetValue Methode.From the PropertyInfo, use the GetValue method.

Hinweis

Beginnend mit der .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, diese Methode kann verwendet werden, auf nicht öffentliche Member zuzugreifen, wenn der Aufrufer erteilt wurde ReflectionPermission mit der ReflectionPermissionFlag.RestrictedMemberAccess kennzeichnen und Menge oder eine Teilmenge der Berechtigungssatz die nicht öffentlichen Member an des Aufrufers des beschränkt ist zu gewähren davon.Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (Finden Sie unter Überlegungen zur Sicherheit für die Reflektion.)(See Security Considerations for Reflection.)

Zur Verwendung dieser Funktionen sollte die Anwendung für .NET Framework 3,5.NET Framework 3.5 oder höher ausgelegt sein. To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Sicherheit

ReflectionPermission
Beim Aufruf spät gebundene durch Mechanismen wie z. B. InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Zugeordnete Enumeration: MemberAccessAssociated enumeration: MemberAccess.

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) 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.When overridden in a derived class, returns the property value of a specified object that has the specified binding, index, and culture-specific information.

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);
abstract member GetValue : obj * System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj

Parameter

obj
Object Object Object Object

Das Objekt, dessen Eigenschaftswert zurückgegeben wird.The object whose property value will be returned.

invokeAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Eine bitweise Kombination der folgenden Enumerationsmember, die das Aufrufattribut angeben: InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty und SetProperty.A bitwise combination of the following enumeration members that specify the invocation attribute: InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty, and SetProperty. Es muss ein geeignetes Aufrufattribut angegeben werden.You must specify a suitable invocation attribute. Um beispielsweise einen statischen Member aufzurufen, legen Sie das Static-Flag fest.For example, to invoke a static member, set the Static flag.

binder
Binder Binder 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.An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects through reflection. Wenn binder den Wert null aufweist, wird der Standardbinder verwendet.If binder is null, the default binder is used.

index
Object[]

Optionale Indexwerte für indizierte Eigenschaften.Optional index values for indexed properties. Dieser Wert sollte bei nicht indizierten Eigenschaften null sein.This value should be null for non-indexed properties.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Die Kultur, für die die Ressource lokalisiert werden soll.The culture for which the resource is to be localized. 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.If the resource is not localized for this culture, the Parent property will be called successively in search of a match. Wenn dieser Wert null ist, wird die kulturspezifische Information aus der CurrentUICulture-Eigenschaft abgerufen.If this value is null, the culture-specific information is obtained from the CurrentUICulture property.

Gibt zurück

Der -Eigenschaftswert des angegebenen Objekts.The property value of the specified object.

Implementiert

Ausnahmen

Das index-Array enthält Argumente, die nicht den benötigten Typ haben.The index array does not contain the type of arguments needed.

- oder --or- Der get-Accessor der Eigenschaft wurde nicht gefunden.The property's get accessor is not found.

Das Objekt entspricht nicht dem Zieltyp, oder eine Eigenschaft ist eine Instanzeigenschaft, aber obj ist null.The object does not match the target type, or a property is an instance property but obj is null.

Die Anzahl von Parametern in index entspricht nicht der Anzahl von Parametern, die die indizierte Eigenschaft akzeptiert.The number of parameters in index does not match the number of parameters the indexed property takes.

Es wurde unzulässigerweise versucht, auf eine private oder geschützte Methode innerhalb einer Klasse zuzugreifen.There was an illegal attempt to access a private or protected method inside a class.

Fehler beim Abrufen des Eigenschaftswerts.An error occurred while retrieving the property value. Beispielsweise liegt ein Indexwert, der für eine indizierte Eigenschaft angegeben ist, außerhalb des gültigen Bereichs.For example, an index value specified for an indexed property is out of range. Die InnerException-Eigenschaft gibt die Ursache des Fehlers an.The InnerException property indicates the reason for the error.

Hinweise

Um zu bestimmen, ob eine Eigenschaft indiziert ist, verwenden Sie die GetIndexParameters Methode.To determine whether a property is indexed, use the GetIndexParameters method. Verfügt das resultierende Array 0 (null) Elemente, die Eigenschaft ist nicht indiziert.If the resulting array has 0 (zero) elements, the property is not indexed.

Da in den Typ nicht für einzelne Objekte, statische Eigenschaften gehören, erhalten Sie statische Eigenschaften, indem übergeben null als Objektargument.Because static properties belong to the type, not individual objects, get static properties by passing null as the object argument. Verwenden Sie z. B. den folgenden Code zum Abrufen der statischen CurrentCulture Eigenschaft CultureInfo :For example, use the following code to get the static CurrentCulture property of CultureInfo :

PropertyInfo CurCultProp =   
       (typeof(CultureInfo)).GetProperty("CurrentCulture");   
Console.WriteLine("CurrCult: " +  
       CurCultProp.GetValue(null,null));  

Verwenden der GetValue -Methode, rufen Sie zunächst die Klasse Type.To use the GetValue method, first get the class Type. Von der Type, erhalten die PropertyInfo.From the Type, get the PropertyInfo. Von der PropertyInfo, verwenden Sie die GetValue Methode.From the PropertyInfo, use the GetValue method.

Hinweis

Beginnend mit der .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, diese Methode kann verwendet werden, auf nicht öffentliche Member zuzugreifen, wenn der Aufrufer erteilt wurde ReflectionPermission mit der ReflectionPermissionFlag.RestrictedMemberAccess kennzeichnen und Menge oder eine Teilmenge der Berechtigungssatz die nicht öffentlichen Member an des Aufrufers des beschränkt ist zu gewähren davon.Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (Finden Sie unter Überlegungen zur Sicherheit für die Reflektion.)(See Security Considerations for Reflection.)

Zur Verwendung dieser Funktionen sollte die Anwendung für .NET Framework 3,5.NET Framework 3.5 oder höher ausgelegt sein. To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Sicherheit

ReflectionPermission
Beim Aufruf spät gebundene durch Mechanismen wie z. B. InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Zugeordnete Enumeration: MemberAccessAssociated enumeration: MemberAccess.

Siehe auch

Gilt für: