如何循环遍历 Class 的属性?

How to loop through the properties of a Class?

我发现这个问题很常见,但我没有找到我要找的东西。也许是因为我想做点别的。

所以我目前正在为网络爬虫编写代码,需要比较列表中的对象。 我想做的是循环遍历列表,找到重复项,当我发现重复项时合并这些。

合并时我想:
- 使 latest/most 的信息保持最新。
- 如果最新对象的某个字段为空,则取旧对象字段的值

我认为遍历两个对象的属性是最简单的。

我尝试了很多使用反射的方法,我所能做的就是显示 class 的 属性 个名字。我想要的是他们的价值观。

如果可能的话,我会使用这样的循环:

foreach(property prop in myObject)
{
    string value = myObject.prop;
    //do something
}

这可能吗?还是我遗漏了什么?

为了使用 foreach 循环,您需要使用 <dictionary>,这正是您在这里需要的。将 class 存储在 <dictionary> 列表中,为其提供 T 键和 T 值并循环遍历 class。这样您就可以更轻松地跟踪 class 并维护您想要的过滤器。

类似于:

object obj = new object();
PropertyInfo[] properties = obj.GetType().GetProperties();
foreach (var p in properties)
{
    var myVal = p.GetValue(obj);
}   

请注意,您需要分配对象并将其传递到 PropertyInfo。