我有以下代码:
FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
我要做的是使用反射在运行时获取当前实例化实例的某个属性的值。我怎么能这样做?
答案 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个元素。)