PropertyInfo.GetValue Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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[]) |
Dizine alınan özellikler için isteğe bağlı dizin değerleriyle belirtilen bir nesnenin özellik değerini 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ğe sahip bir Planet
sınıfı tanımlar: Name
, gezegenin adı; ve Distance
, gezegenin Dünya'dan uzaklığı. Örnek, Jüpiter gezegenini temsil eden bir Planet
nesnesi oluşturur ve bunu özellikler hakkında bilgi görüntüleyen ve her Planet
özelliğinin değerini almak için GetValue yöntemini kullanan bir GetPropertyValues
yöntemine 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 GetValue(Object) aşırı yüklemesini çağırırsınız; dizinli bir özelliğin değerini almaya çalışırsanız, yöntemi bir TargetParameterCountException özel durumu oluşturur. GetIndexParameters yöntemini çağırarak bir özelliğin dizine eklenip dizine eklenmediğini belirleyebilirsiniz. Döndürülen ParameterInfo dizisinin uzunluğu sıfırsa, özellik dizine alınmaz.
Bu, soyut GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) yöntemi için BindingFlags parametresi BindingFlags.Default, Bindernull
olarak ayarlanmış, dizin değerleri nesne dizisi null
olarak ayarlanmış ve CultureInfonull
olarak ayarlanmış bir uygulama sağlayan bir kolaylık yöntemidir.
Şunlara uygulanır
GetValue(Object, Object[])
- Kaynak:
- PropertyInfo.cs
- Kaynak:
- PropertyInfo.cs
- Kaynak:
- PropertyInfo.cs
Dizine alınan özellikler için isteğe bağlı dizin değerleriyle belirtilen bir nesnenin özellik değerini 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. Dizine alınamayan özellikler için bu değer null
olmalıdır.
Döndürülenler
Belirtilen nesnenin özellik değeri.
Uygulamalar
Özel durumlar
index
dizisi gereken bağımsız değişken türünü içermez.
-veya-
Özelliğin get
erişimcisi bulunamadı.
Nesne hedef türle eşleşmiyor veya bir özellik bir örnek özelliği ama obj
null
.
Not: Windows Mağazası uygulamaları veya
index
içindeki parametre sayısı, dizine alınan özelliğin aldığı parametre sayısıyla eşleşmiyor.
Bir sınıfın içinde özel veya korumalı bir yönteme erişmeye yönelik yasadışı bir girişim vardı.
Not: Windows Mağazası uygulamaları veya
Ö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. InnerException özelliği hatanın 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, String sınıfının varsayılan özelliğidir (C#'da dizin oluşturucu).
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ıp vermediğini belirlemek için GetIndexParameters yöntemini kullanın. Sonuçta elde edilen dizide 0 (sıfır) öğe varsa, özelliği dizine alınmaz.
Bu, soyut GetValue
yöntemi için Default
, Binder
null
olarak ayarlanmış Binder
ve CultureInfo
null
olarak ayarlanmış bir BindingFlags
parametresiyle bir uygulama sağlayan bir kolaylık yöntemidir.
Statik özellikler tek tek nesnelere değil türe ait olduğundan, nesne bağımsız değişkeni olarak null
geçirerek statik özellikler elde edin. Örneğin, CultureInfo
statik CurrentCulture
özelliğini almak için aşağıdaki kodu kullanın:
PropertyInfo CurCultProp =
(typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
CurCultProp.GetValue(null,null));
GetValue
yöntemini kullanmak için önce sınıfını Type
alın.
Type
PropertyInfo
alın.
PropertyInfo
GetValue
yöntemini kullanın.
Not
.NET Framework 2.0'dan başlayarak, çağırana ReflectionPermissionFlag.RestrictedMemberAccess bayrağıyla ReflectionPermission verildiyse ve genel olmayan üyelerin izin kümesi çağıranın izin kümesiyle veya bunun bir alt kümesiyle kısıtlanmışsa, bu yöntem genel olmayan üyelere erişmek için kullanılabilir. (Bkz. Yansımaiçin
Ş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
, GetProperty
ve SetProperty
. Uygun bir çağırma özniteliği belirtmeniz gerekir. Örneğin, statik bir üyeyi çağırmak için Static
bayrağını ayarlayın.
- binder
- Binder
Bağlamayı, bağımsız değişken türlerini zorlamayı, üyeleri çağırmayı ve yansıma aracılığıyla MemberInfo nesnelerin alınmasını sağlayan nesne.
binder
null
ise, varsayılan bağlayıcı kullanılır.
- index
- Object[]
Dizine alınan özellikler için isteğe bağlı dizin değerleri. Dizine alınamayan özellikler için bu değer null
olmalıdır.
- culture
- CultureInfo
Kaynağın yerelleştirileceği kültür. Kaynak bu kültür için yerelleştirilmemişse, Parent özelliği eşleşme aramasında ardışık olarak çağrılır. Bu değer null
ise, kültüre özgü bilgiler CurrentUICulture özelliğinden alınır.
Döndürülenler
Belirtilen nesnenin özellik değeri.
Uygulamalar
Özel durumlar
index
dizisi gereken bağımsız değişken türünü içermez.
-veya-
Özelliğin get
erişimcisi bulunamadı.
Nesne hedef türle eşleşmiyor veya bir özellik bir örnek özelliği ama obj
null
.
index
içindeki parametre sayısı, dizine alınan özelliğin aldığı parametre sayısıyla eşleşmiyor.
Bir sınıfın içinde özel veya korumalı bir yönteme erişmeye yönelik yasadışı 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. InnerException özelliği hatanın nedenini gösterir.
Açıklamalar
Bir özelliğin dizine alıp vermediğini belirlemek için GetIndexParameters yöntemini kullanın. 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 null
geçirerek statik özellikler elde edin. Örneğin, CultureInfo
statik CurrentCulture
özelliğini almak için aşağıdaki kodu kullanın:
PropertyInfo CurCultProp =
(typeof(CultureInfo)).GetProperty("CurrentCulture");
Console.WriteLine("CurrCult: " +
CurCultProp.GetValue(null,null));
GetValue
yöntemini kullanmak için önce sınıfını Type
alın.
Type
PropertyInfo
alın.
PropertyInfo
GetValue
yöntemini kullanın.
Not
.NET Framework 2.0'dan başlayarak, çağırana ReflectionPermissionFlag.RestrictedMemberAccess bayrağıyla ReflectionPermission verildiyse ve genel olmayan üyelerin izin kümesi çağıranın izin kümesiyle veya bunun bir alt kümesiyle kısıtlanmışsa, bu yöntem genel olmayan üyelere erişmek için kullanılabilir. (Bkz. Yansımaiçin