我试图从PropertyInfo[]
获取值,但我无法让它工作:
foreach (var propertyInfo in foo.GetType().GetProperties())
{
var value = propertyInfo.GetValue(this, null);
}
例外:Object does not match target type.
这不应该怎么做?
答案 0 :(得分:31)
您最初从this
获取PropertyInfo
时尝试从foo.GetType()
获取属性。所以这更合适:
var value = propertyInfo.GetValue(foo, null);
假设你想要有效地获得foo.SomeProperty
等等。
答案 1 :(得分:7)
您收到该异常是因为this
与foo
的类型不同。
您应确保获取要尝试从中获取值的同一对象的属性。我猜测你的代码中你希望这个在循环范围内是foo(根本不是这种情况),所以你需要将违规行更改为:
var value = propertyInfo.GetValue(foo, null);
答案 2 :(得分:4)
您正在处理以foo
的类型声明的属性,但尝试从this
读取它们的值,这显然不是同一类型。