获取propertyinfo值

时间:2012-01-31 14:28:38

标签: c#

我试图从PropertyInfo[]获取值,但我无法让它工作:

foreach (var propertyInfo in foo.GetType().GetProperties())
{
      var value = propertyInfo.GetValue(this, null);
}

例外:Object does not match target type.

这不应该怎么做?

3 个答案:

答案 0 :(得分:31)

您最初从this获取PropertyInfo时尝试从foo.GetType()获取属性。所以这更合适:

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

假设你想要有效地获得foo.SomeProperty等等。

答案 1 :(得分:7)

您收到该异常是因为thisfoo的类型不同。

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

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

答案 2 :(得分:4)

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