逆シリアル化する次の XML ファイルがあります。
<RoutesConfiguration>
<RouteList>
<SpecialRoute Name="Url" Urlpattern="MyUrl">
<Defaults>
<Item>
<Key>controller</Key>
<Value>Rss</Value>
</Item>
<Item>
<Key>action</Key>
<Value>LastItems</Value>
</Item>
<Item>
<Key>id</Key>
<Value>1</Value>
</Item>
</Defaults>
</SpecialRoute>
</RouteList>
</RoutesConfiguration>
これは私の逆シリアル化コードです:
StreamReader reader = new StreamReader(Server.MapPath(ConfigurationManager.AppSettings["RoutesConfigurationPath"]));
var routes = (RoutesConfiguration)serializer.Deserialize(reader);
このクラスは、XML ファイル内のすべての「Item」要素を表します。
public class Item
{
public string Key { get; set; }
public object Value { get; set; }
}
デシリアライズされたインスタンスを正常に取得できますが、すべてのアイテムのプロパティ「値」に 1 つの問題があります。
この「値」プロパティは、System.Xml.XmlNode[]として逆シリアル化されています。問題は、この値を両方のタイプに設定できるため、このプロパティを文字列または int に入力できないことです。このため、「オブジェクト」と入力しました。
この XmlNode 配列ではなく、逆シリアル化から正しい型を取得する方法を知っていますか?
ありがとう
よろしく。
ホセ