如何遍历类的属性?

时间:2015-05-27 07:27:19

标签: c# class reflection properties

我发现这个问题很常见,但我找不到我要找的东西。也许'因为我想做别的事。

所以我目前正在编写一个webcrawler,需要比较列表中的对象。 我想要做的是循环遍历列表,找到重复项,当我发现重复项合并这些。

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

我认为循环浏览两个对象的属性是最简单的。

我已经尝试了很多使用反射的东西,我所能达到的只是显示一个类的属性名称。我想要的只是他们的价值观。

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

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

这可能吗?或者我错过了什么?

2 个答案:

答案 0 :(得分:10)

类似的东西:

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

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

答案 1 :(得分:0)

为了使用foreach循环,您需要使用<dictionary>,这正是您需要的。将您的班级存储在<dictionary>列表中,给它T键和T值并循环通过该班级。通过这种方式,您可以更轻松地跟踪班级并维护所需的过滤器。