使用反射编辑对象属性的属性

时间:2014-04-24 17:00:53

标签: c# reflection

我试图在循环遍历所述对象的属性时编辑对象属性的属性。好吧,这很难摆脱我的困扰!希望代码示例在这里有所帮助!

MyObject object = new MyObject();
foreach (PropertyInfo propInfo in typeof(MyObject).GetProperties())
{
    if (propInfo.PropertyType.ToString().Contains("System"))
    {
        continue;
    }
    foreach (PropertyInfo subPropInfo in propInfo.PropertyType.GetProperties())
    {
         if (subPropInfo.PropertyType.ToString().Contains("System"))
         {
              continue;
         }
         else
         {
            // Set the value here
         }
    }
}

我可以在对象的第一个循环中使用SetValue(object, "value"),但我无法弄清楚如何在嵌套循环中使用它。有没有办法做到这一点,还是我完全以错误的方式解决这个问题?

1 个答案:

答案 0 :(得分:1)

要获取子属性的值,您将获得外部属性的值,并将其用作子属性的Info对象的“对象”:

var subPropertyValue = subPropInfo.GetValue(propInfo.GetValue(obj, null), null);

设置它;同样的想法:

subPropInfo.SetValue(propInfo.GetValue(obj, null), someValue);