Get PropertyInfo value

本文关键字:value PropertyInfo Get | 更新日期: 2023-09-27 18:21:55

我试图从PropertyInfo[]中获取值,但无法使其工作:

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

异常:Object does not match target type.

这不是应该做的吗?

Get PropertyInfo value

最初从foo.GetType()获取PropertyInfo时,您正试图从this获取属性。因此,这将更合适:

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

这是假设你想有效地获得foo.SomeProperty

由于thisfoo的类型不同,所以会出现该异常。

您应该确保您正在获取要尝试从中获取值的同一对象的属性。我从你的代码中猜测,你希望这是循环范围内的foo(事实并非如此),所以你需要将有问题的行更改为:

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

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