PropertyInfo.GetValue Metoda

Definice

Vrátí hodnotu vlastnosti zadaného objektu.

Přetížení

Name Description
GetValue(Object)

Vrátí hodnotu vlastnosti zadaného objektu.

GetValue(Object, Object[])

Vrátí hodnotu vlastnosti zadaného objektu s volitelnými hodnotami indexu pro indexované vlastnosti.

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

Při přepsání v odvozené třídě vrátí hodnotu vlastnosti zadaného objektu, který má zadané vazby, index a informace specifické pro jazykovou verzi.

GetValue(Object)

Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs

Vrátí hodnotu vlastnosti zadaného objektu.

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

Parametry

obj
Object

Objekt, jehož hodnota vlastnosti bude vrácena.

Návraty

Hodnota vlastnosti zadaného objektu.

Příklady

Následující příklad definuje Planet třídu, která má dvě vlastnosti: Namenázev planety; a Distance, vzdálenost planety od Země. Příklad vytvoří instanci objektu Planet , který představuje planetu Jupiter, a předá ji GetPropertyValues metodě, která zobrazuje informace o vlastnostech a používá metodu GetValue k získání hodnoty každé Planet vlastnosti.

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

Poznámky

Volání GetValue(Object) přetížení načtení hodnoty neindexované vlastnosti; pokud se pokusíte načíst hodnotu indexované vlastnosti, metoda vyvolá TargetParameterCountException výjimku. Můžete určit, zda je vlastnost indexována, nebo ne voláním GetIndexParameters metody. Pokud je délka vráceného ParameterInfo pole nula, vlastnost není indexována.

Jedná se o metodu pohodlí, která poskytuje implementaci pro abstraktní GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) metodu s parametrem BindingFlags nastaveným na BindingFlags.Default, nastaveno nullBinder na , pole objektů hodnot indexu nastavené na nulla nastaveno CultureInfo na null.

Platí pro

GetValue(Object, Object[])

Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs

Vrátí hodnotu vlastnosti zadaného objektu s volitelnými hodnotami indexu pro indexované vlastnosti.

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

Parametry

obj
Object

Objekt, jehož hodnota vlastnosti bude vrácena.

index
Object[]

Volitelné hodnoty indexu pro indexované vlastnosti. Indexy indexovaných vlastností jsou založené na nule. Tato hodnota by měla být null pro neindexované vlastnosti.

Návraty

Hodnota vlastnosti zadaného objektu.

Implementuje

Výjimky

Pole index neobsahuje požadovaný typ argumentů.

nebo

Přístupové objekty get vlastnosti nebyly nalezeny.

Objekt neodpovídá cílovému typu nebo vlastnost je vlastnost instance, ale obj je null.

Počet parametrů index neodpovídá počtu parametrů, které indexovaná vlastnost přebírá.

Došlo k nezákonnému pokusu o přístup k privátní nebo chráněné metodě uvnitř třídy.

Při načítání hodnoty vlastnosti došlo k chybě. Například hodnota indexu zadaná pro indexovanou vlastnost je mimo rozsah. Vlastnost InnerException označuje důvod chyby.

Příklady

Následující příklad ukazuje, jak získat hodnotu indexované vlastnosti. Vlastnost String.Chars[] je výchozí vlastnost (indexer v jazyce C#) String třídy.

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

Poznámky

Chcete-li zjistit, zda je vlastnost indexována, použijte metodu GetIndexParameters . Pokud výsledná matice obsahuje 0 (nula) prvků, vlastnost není indexována.

Jedná se o metodu pohodlí, která poskytuje implementaci abstraktní GetValue metody s parametrem BindingFlagsDefault, Binder nastaveným nullna a nastavenou na CultureInfonull.

Vzhledem k tomu, že statické vlastnosti patří k typu, nikoli k jednotlivým objektům, získejte statické vlastnosti předáním null argumentu objektu. Například pomocí následujícího kódu získejte statickou CurrentCulture vlastnost CultureInfo :

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

Chcete-li použít metodu GetValue , nejprve získejte třídu Type. Od , Typezískat PropertyInfo. Z příkazu PropertyInfo, použijte metodu GetValue .

Poznámka:

Tuto metodu lze použít pro přístup k neveřejným členům, pokud byl volající udělen ReflectionPermission příznakem ReflectionPermissionFlag.RestrictedMemberAccess a pokud je sada udělení nepřístupných členů omezena na sadu grantů volajícího nebo její podmnožinu. (Viz Aspekty zabezpečení reflexe.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na .NET Framework 3.5 nebo novější.

Platí pro

GetValue(Object, BindingFlags, Binder, Object[], CultureInfo)

Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs
Zdroj:
PropertyInfo.cs

Při přepsání v odvozené třídě vrátí hodnotu vlastnosti zadaného objektu, který má zadané vazby, index a informace specifické pro jazykovou verzi.

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

Parametry

obj
Object

Objekt, jehož hodnota vlastnosti bude vrácena.

invokeAttr
BindingFlags

Bitové kombinace následujících členů výčtu, které určují atribut vyvolání: InvokeMethod, CreateInstance, StaticGetField, , SetFieldGetPropertya SetProperty. Je nutné zadat vhodný atribut vyvolání. Pokud chcete například vyvolat statický člen, nastavte Static příznak.

binder
Binder

Objekt, který umožňuje vazbu, převod typů argumentů, vyvolání členů a načtení MemberInfo objektů prostřednictvím reflexe. Pokud binder ano null, použije se výchozí pořadač.

index
Object[]

Volitelné hodnoty indexu pro indexované vlastnosti. Tato hodnota by měla být null pro neindexované vlastnosti.

culture
CultureInfo

Jazyková verze, pro kterou má být prostředek lokalizován. Pokud prostředek není lokalizovaný pro tuto jazykovou verzi, Parent bude vlastnost volána postupně při hledání shody. Pokud je nulltato hodnota , informace specifické pro jazykovou verzi jsou získány z CurrentUICulture vlastnosti.

Návraty

Hodnota vlastnosti zadaného objektu.

Implementuje

Výjimky

Pole index neobsahuje požadovaný typ argumentů.

nebo

Přístupové objekty get vlastnosti nebyly nalezeny.

Objekt neodpovídá cílovému typu nebo vlastnost je vlastnost instance, ale obj je null.

Počet parametrů index neodpovídá počtu parametrů, které indexovaná vlastnost přebírá.

Došlo k nezákonnému pokusu o přístup k privátní nebo chráněné metodě uvnitř třídy.

Při načítání hodnoty vlastnosti došlo k chybě. Například hodnota indexu zadaná pro indexovanou vlastnost je mimo rozsah. Vlastnost InnerException označuje důvod chyby.

Poznámky

Chcete-li zjistit, zda je vlastnost indexována, použijte metodu GetIndexParameters . Pokud výsledná matice obsahuje 0 (nula) prvků, vlastnost není indexována.

Vzhledem k tomu, že statické vlastnosti patří k typu, nikoli k jednotlivým objektům, získejte statické vlastnosti předáním null argumentu objektu. Například pomocí následujícího kódu získejte statickou CurrentCulture vlastnost CultureInfo :

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

Chcete-li použít metodu GetValue , nejprve získejte třídu Type. Od , Typezískat PropertyInfo. Z příkazu PropertyInfo, použijte metodu GetValue .

Poznámka:

Tuto metodu lze použít pro přístup k neveřejným členům, pokud byl volající udělen ReflectionPermission příznakem ReflectionPermissionFlag.RestrictedMemberAccess a pokud je sada udělení nepřístupných členů omezena na sadu grantů volajícího nebo její podmnožinu. (Viz Aspekty zabezpečení reflexe.) Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na .NET Framework 3.5 nebo novější.

Viz také

Platí pro