Эта проблема
Используя C#, мне нужно пройти через объект, который был приведен к ExpandoObject
из 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
нет сеттера, поэтому я не могу запустить этот метод рекурсивно.
Любые предложения приветствуются. Спасибо!