【问题标题】:Get PropertyInfo value获取 PropertyInfo 值
【发布时间】:2020-03-28 23:11:56
【问题描述】:

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

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

例外:Object does not match target type.

这不是应该怎么做的吗?

【问题讨论】:

  • thisfoo是什么类型?
  • this 是否包含propertyInfo 所代表的属性?

标签: c#


【解决方案1】:

当您最初从foo.GetType() 获取PropertyInfos 时,您正试图从this 获取属性。所以这样会更合适:

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

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

【讨论】:

  • @Johan:不,它指的是你在上下文中的任何对象,就像平常一样...propertyInfo 指的是循环中的每个propertyInfo
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      相关资源
      最近更新 更多