問題
ExpandoObject
C# を使用して、 fromにキャストされたオブジェクトをトラバースし、XML
すべての "price" プロパティを新しい値に置き換える必要があります。
このオブジェクトは非常に構造化されておらず、ネストされたノード (実際にはネストされた 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
、セッターがないため、このメソッドを再帰的に実行できないことです。
任意の提案をいただければ幸いです。ありがとう!