问题
使用 C#,我需要遍历一个已转换为ExpandoObject
from的对象,XML
并将任何“价格”属性替换为新值。
这个对象是非常非结构化的并且有很多层的嵌套节点(实际上是嵌套的 ExpandoObjects)。更具体地说,层次结构可能如下所示:
产品 => 价格、数量、配件
每个配件都可能有价格和数量,并且本身可能有配件,这就是我需要递归的原因。
到目前为止我所拥有的
public ExpandoObject UpdatePricing(ExpandoObject exp)
{
//Is there a price property?
var hasPrice = exp.Any(a => a.Key == "price");
if (hasPrice)
{
//update price here
exp.price = 0; //Some other price
}
//Now loop through the whole object. If any of the properties contain an expando, then call this method again
foreach (var kvp in exp)
{
if (kvp.Value is ExpandoObject)
{
//THIS CODE IS NO GOOD BECAUSE kvp.Value has no setter!!
kvp.Value = UpdatePricing(kvp.Value);
}
}
return exp;
}
我遇到的问题是kvp.Value
没有设置器,所以我不能递归地运行这个方法。
任何建议表示赞赏。谢谢!