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[]) |
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 Distance
gezegenin 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ış CultureInfonull
null
olan 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ış null
olan bir Default
BindingFlags
uygulama sağlayan bir kolaylık yöntemidir CultureInfo
null
.
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ı Type
alın. içinden Type
öğesini alın PropertyInfo
. içinden PropertyInfo
yö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
, GetProperty
ve 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 binder
null
, 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ı Type
alın. içinden Type
öğesini alın PropertyInfo
. içinden PropertyInfo
yö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.