如何使用reflection来获取属性值

我有以下代码:

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

我想要做的是在运行时使用reflection获取当前实例化实例的属性之一的值。 我该怎么做?

像这样的东西应该工作:

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

尝试GetProperties方法,它应该得到你的属性,而不是字段。

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

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

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