我正在創建一個從Web服務獲取燃料價格的應用程序。我想用燃料作爲關鍵字對價格對象的IDictionary進行反序列化(類似於this)。將XML反序列化爲IDictionary
我已經創建了一個setter來做到這一點,但後來發現序列化使用Add方法而不是列表的setter。有沒有使用序列化API來完成此操作的方法,還是必須編寫自定義序列化代碼?
的XML看起來像這樣
<?xml version="1.0"?>
<prices>
<price fuel="Petrol">152.43</price>
<price fuel="Diesel">147.53</price>
</prices>
的代碼看起來像這樣
[XmlRoot("prices")]
public class FuelPrices
{
private IDictionary<Fuel, Price> prices = new Dictionary<Fuel, Price>();
// This is used for serialising to XML
[XmlElement("price")]
public ICollection<Price> Prices
{
get
{
return prices.Values;
}
set
{
prices = new Dictionary<Fuel, Price>();
foreach (Price price in value)
{
prices[price.Fuel] = price;
}
}
}
// These properties are used to access the prices in the code
[XmlIgnore]
public Price PetrolPrice
{
get
{
Price petrolPrice;
prices.TryGetValue(Fuel.Petrol, out petrolPrice);
return petrolPrice;
}
}
[XmlIgnore]
public Price DieselPrice
{
get
{
Price dieselPrice;
prices.TryGetValue(Fuel.Diesel, out dieselPrice);
return dieselPrice;
}
}
}
什麼是'Price'和'Fuel'?爲什麼你想使用反序列化而不是解析? –
價格是一個有價格和燃料的類。燃料是一個枚舉。我沒有發佈這些代碼,以避免混淆這個問題,但我可以,如果你願意。至於我爲什麼要使用序列化,它似乎是整潔,少代碼。另外,如果我編寫解析XML的代碼,我將不得不編寫更多代碼將其轉換回XML,序列化將免費提供給我。 – robingrindrod