获取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等。

你得到的例外是因为thisfoo类型不同。

您应确保获取要尝试从中获取值的同一对象的属性。 我猜测你的代码中你期望这在循环范围内是foo(根本不是这种情况),所以你需要将违规行更改为:

 var value = propertyInfo.GetValue(foo, null); 

您正在处理以foo类型声明的属性,但尝试从中读取它们的值,这显然不是同一类型。