对作为对象的属性进行反序列化会生成XmlNode数组

时间:2012-12-21 20:05:34

标签: c# deserialization

我有以下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; }
}

我让我的反序列化实例没问题,但是每个项目的属性“Value”都有一个问题。

此“值”属性正在反序列化为 System.Xml.XmlNode [] 。问题是我无法将此属性键入string或int,因为此值可以设置为两种类型。因此我输入“对象”。

你知道从反序列化获得正确类型而不是这个XmlNode数组的任何方法吗?

由于

问候。

何塞

0 个答案:

没有答案