0

逆シリアル化する次の 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 配列ではなく、逆シリアル化から正しい型を取得する方法を知っていますか?

ありがとう

よろしく。

ホセ

4

0 に答える 0