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