我试图在循环遍历所述对象的属性时编辑对象属性的属性。好吧,这很难摆脱我的困扰!希望代码示例在这里有所帮助!
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")
,但我无法弄清楚如何在嵌套循环中使用它。有没有办法做到这一点,还是我完全以错误的方式解决这个问题?
答案 0 :(得分:1)
要获取子属性的值,您将获得外部属性的值,并将其用作子属性的Info对象的“对象”:
var subPropertyValue = subPropInfo.GetValue(propInfo.GetValue(obj, null), null);
设置它;同样的想法:
subPropInfo.SetValue(propInfo.GetValue(obj, null), someValue);