动态获取属性值

Jam*_*xon 7 c# reflection properties

我有一个具有大量属性的对象.我想通过循环遍历对象的属性集合来获取每个属性的值.

我已经研究过PropertyInfo.GetValue()方法,但是在我的上下文中没有多大意义.

这是我正在尝试做的一个例子(这段代码不起作用):

foreach(var item in dataObjects)
  {
    foreach(PropertyInfo prop in item.GetType().GetProperties())
    {
      String value = prop.GetValue().ToString()
    }
  }
Run Code Online (Sandbox Code Playgroud)

我现在意识到获得一个属性的价值并不容易.我错过了什么?我真的不明白我需要传递给GetValue()方法,因为我只想要我正在调用该方法的属性的值.

感谢您为我澄清这一点的任何帮助.我在这里花了几个小时,只是把头撞在桌子上.

Rex*_*x M 10

您需要提供要调用相关属性的特定对象:

prop.GetValue(item, null);
Run Code Online (Sandbox Code Playgroud)

PropertyInfo只是关于类型属性的metatdata ,而不是特定对象实例上的属性.PropertyInfo不知道它来自哪个实例(如果有的话) - 只是它来自的类型/类.

您几乎可以将PropertyInfo视为属性的名称.这不足以让它独自完成任何事情 - 然后我们不得不说"用这个名字获取财产的价值...... 什么? "在我们提供的对象上.