PropertyInfo.GetValue Yöntem

Tanım

Belirtilen nesnenin özellik değerini döndürür.

Aşırı Yüklemeler

GetValue(Object)

Belirtilen nesnenin özellik değerini döndürür.

GetValue(Object, Object[])

Belirtilen nesnenin özellik değerini, dizine alınan özellikler için isteğe bağlı dizin değerleriyle döndürür.

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

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bağlama, dizin ve kültüre özgü bilgilere sahip belirtilen bir nesnenin özellik değerini döndürür.

GetValue(Object)

Kaynak:
PropertyInfo.cs
Kaynak:
PropertyInfo.cs
Kaynak:
PropertyInfo.cs

Belirtilen nesnenin özellik değerini döndürür.

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

Parametreler

obj
Object

Özellik değeri döndürülecek nesne.

Döndürülenler

Belirtilen nesnenin özellik değeri.

Örnekler

Aşağıdaki örnek, iki özelliği olan bir Planet sınıfı tanımlar: Name, gezegenin adı; ve Distancegezegenin Dünya'dan uzaklığı. Örnek Jüpiter gezegenini temsil eden bir Planet nesnenin örneğini oluşturur ve bunu özellikler hakkında bilgi görüntüleyen ve her Planet özelliğin değerini almak için yöntemini kullanan GetValue bir GetPropertyValues yönteme geçirir.

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

Açıklamalar

Dizine alınmamış bir özelliğin değerini almak için aşırı yüklemeyi çağırırsınız GetValue(Object) ; dizine alınmış bir özelliğin değerini almaya çalışırsanız yöntem bir TargetParameterCountException özel durum oluşturur. yöntemini çağırarak GetIndexParameters bir özelliğin dizine alınıp alınmadığını belirleyebilirsiniz. Döndürülen ParameterInfo dizinin uzunluğu sıfırsa özelliği dizine alınmaz.

Bu, soyut GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) yöntem için parametresi olarak ayarlanmış, değeri olarak ayarlanmışBindingFlags.Defaultnull, Binder dizin değerlerinin nesne dizisi ve olarak ayarlanmış CultureInfonullnullolan bir uygulama sağlayan kullanışlı bir yöntemdir.BindingFlags

Şunlara uygulanır

GetValue(Object, Object[])

Kaynak:
PropertyInfo.cs
Kaynak:
PropertyInfo.cs
Kaynak:
PropertyInfo.cs

Belirtilen nesnenin özellik değerini, dizine alınan özellikler için isteğe bağlı dizin değerleriyle döndürür.

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

Parametreler

obj
Object

Özellik değeri döndürülecek nesne.

index
Object[]

Dizine alınan özellikler için isteğe bağlı dizin değerleri. Dizine alınan özelliklerin dizinleri sıfır tabanlıdır. Bu değer dizine alınamayan özellikler için olmalıdır null .

Döndürülenler

Belirtilen nesnenin özellik değeri.

Uygulamalar

Özel durumlar

Dizi index , gereken bağımsız değişkenlerin türünü içermez.

-veya-

Tesisin get erişimcisi bulunamadı.

Nesne hedef türüyle eşleşmiyor veya bir özellik bir örnek özelliğidir ancak obj olur null.

Not: Windows Mağazası uygulamaları için .NET'te veya Taşınabilir Sınıf Kitaplığı'nda bunun yerine yakalayın Exception .

içindeki index parametre sayısı, dizine alınan özelliğin aldığı parametre sayısıyla eşleşmiyor.

Sınıfın içinde özel veya korumalı bir yönteme erişmeye yönelik geçersiz bir girişim vardı.

Not: Windows Mağazası uygulamaları için .NET'te veya Taşınabilir Sınıf Kitaplığı'nda bunun yerine temel sınıf özel durumunu MemberAccessExceptionyakalayın.

Özellik değeri alınırken bir hata oluştu. Örneğin, dizine alınan bir özellik için belirtilen dizin değeri aralık dışındadır. özelliği hatanın InnerException nedenini gösterir.

Örnekler

Aşağıdaki örnekte, dizine alınan bir özelliğin değerinin nasıl alınacakları gösterilmektedir. String.Chars[] özelliği, sınıfının varsayılan özelliğidir (C# dilinde dizin oluşturucu).String

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

Açıklamalar

Bir özelliğin dizine alınıp alınmadığını belirlemek için yöntemini kullanın GetIndexParameters . Sonuçta elde edilen dizide 0 (sıfır) öğe varsa özelliği dizine alınmaz.

Bu, soyut GetValue yöntem için parametresi , Binder ve olarak ayarlanmış nullolan bir DefaultBindingFlags uygulama sağlayan bir kolaylık yöntemidir CultureInfonull.

Statik özellikler tek tek nesnelere değil türe ait olduğundan, nesne bağımsız değişkeni olarak geçirerek null statik özellikleri alır. Örneğin, statik özelliğini CultureInfo almak CurrentCulture için aşağıdaki kodu kullanın:

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

yöntemini kullanmak GetValue için önce sınıfını Typealın. içinden Typeöğesini alın PropertyInfo. içinden PropertyInfoyöntemini kullanın GetValue .

Not

.NET Framework 2.0'dan başlayarak bu yöntem, çağıranın bayrağıyla verilmiş ReflectionPermission olması ve genel olmayan üyelerin izin kümesinin çağıranın izin kümesiyle veya bunun bir alt kümesiyle ReflectionPermissionFlag.RestrictedMemberAccess sınırlı olması durumunda genel olmayan üyelere erişmek için kullanılabilir. (Bkz. Yansıma için GüvenlikLe İlgili Dikkat Edilmesi Gerekenler.) Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.

Şunlara uygulanır

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

Kaynak:
PropertyInfo.cs
Kaynak:
PropertyInfo.cs
Kaynak:
PropertyInfo.cs

Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bağlama, dizin ve kültüre özgü bilgilere sahip belirtilen bir nesnenin özellik değerini döndürür.

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

Parametreler

obj
Object

Özellik değeri döndürülecek nesne.

invokeAttr
BindingFlags

Çağırma özniteliğini belirten aşağıdaki numaralandırma üyelerinin bit düzeyinde birleşimi: InvokeMethod, CreateInstance, Static, GetField, , SetField, GetPropertyve SetProperty. Uygun bir çağırma özniteliği belirtmeniz gerekir. Örneğin, statik bir üyeyi çağırmak için bayrağını Static ayarlayın.

binder
Binder

Bağlamayı, bağımsız değişken türlerini zorlamayı, üyeleri çağırmayı ve nesneleri yansıma aracılığıyla almayı MemberInfo sağlayan nesne. ise bindernull, varsayılan bağlayıcı kullanılır.

index
Object[]

Dizine alınan özellikler için isteğe bağlı dizin değerleri. Bu değer dizine alınamayan özellikler için olmalıdır null .

culture
CultureInfo

Kaynağın yerelleştirileceği kültür. Kaynak bu kültür için yerelleştirilmemişse, Parent eşleşme aramasında özellik ardışık olarak çağrılır. Bu değer ise null, kültüre özgü bilgiler özelliğinden CurrentUICulture alınır.

Döndürülenler

Belirtilen nesnenin özellik değeri.

Uygulamalar

Özel durumlar

Dizi index , gereken bağımsız değişkenlerin türünü içermez.

-veya-

Tesisin get erişimcisi bulunamadı.

Nesne hedef türüyle eşleşmiyor veya bir özellik bir örnek özelliğidir ancak obj olur null.

içindeki index parametre sayısı, dizine alınan özelliğin aldığı parametre sayısıyla eşleşmiyor.

Sınıfın içinde özel veya korumalı bir yönteme erişmeye yönelik geçersiz bir girişim vardı.

Özellik değeri alınırken bir hata oluştu. Örneğin, dizine alınan bir özellik için belirtilen dizin değeri aralık dışındadır. özelliği hatanın InnerException nedenini gösterir.

Açıklamalar

Bir özelliğin dizine alınıp alınmadığını belirlemek için yöntemini kullanın GetIndexParameters . Sonuçta elde edilen dizide 0 (sıfır) öğe varsa özelliği dizine alınmaz.

Statik özellikler tek tek nesnelere değil türe ait olduğundan, nesne bağımsız değişkeni olarak geçirerek null statik özellikleri alır. Örneğin, statik özelliğini CultureInfo almak CurrentCulture için aşağıdaki kodu kullanın:

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

yöntemini kullanmak GetValue için önce sınıfını Typealın. içinden Typeöğesini alın PropertyInfo. içinden PropertyInfoyöntemini kullanın GetValue .

Not

.NET Framework 2.0'dan başlayarak bu yöntem, çağıranın bayrağıyla verilmiş ReflectionPermission olması ve genel olmayan üyelerin izin kümesinin çağıranın izin kümesiyle veya bunun bir alt kümesiyle ReflectionPermissionFlag.RestrictedMemberAccess sınırlı olması durumunda genel olmayan üyelere erişmek için kullanılabilir. (Bkz. Yansıma için GüvenlikLe İlgili Dikkat Edilmesi Gerekenler.) Bu işlevselliği kullanmak için uygulamanızın .NET Framework 3.5 veya sonraki bir sürümü hedeflemesi gerekir.

Ayrıca bkz.

Şunlara uygulanır