如何使用反射获取属性值

时间:2012-04-26 17:01:01

标签: c# reflection

我有以下代码:

FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

我要做的是使用反射在运行时获取当前实例化实例的某个属性的值。我怎么能这样做?

2 个答案:

答案 0 :(得分:85)

这样的事情应该有效:

var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);

答案 1 :(得分:22)

尝试使用GetProperties方法,它应该为您提供属性,而不是字段。

要检索值,请执行以下操作:

object foo = ...;
object propertyValue = foo.GetType().GetProperty("PropertyName").GetValue(foo, null);

这是使用GetProperty,它只返回一个PropertyInfo对象,而不是它们的数组。然后我们调用GetValue,它接受对象的参数来从中检索值(PropertyInfo特定于类型,而不是实例)。 GetValue的第二个参数是一个索引器数组,用于索引属性,我假设您感兴趣的属性不是索引属性。 (索引属性使您可以list[14]检索列表的第14个元素。)