如何在XML中序列化字典

时间:2013-11-18 16:59:02

标签: c# .net wcf serialization reflection

我正在尝试基于此实体发送XML:

[XmlElement]
public decimal Price { get; set; }
[XmlElement]
public Dictionary<string, string> Data{get; set;}

在添加最新参数之前,没有问题,但添加字典会导致麻烦。

例外是:

Error : There was an error reflecting type 'Project.Entities.Offers'.

这是序列化程序和导致问题的行

The XmlSerializer is doing an Exception

public string Serialize<T>()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(T));
...
}

这是解决这个问题的方法吗?解决方法?

感谢帮助我

1 个答案:

答案 0 :(得分:0)

Dictionary<TKey,TValue>未标记为可序列化。这样做的原因是,当字典是XML格式时,你不能强制执行唯一性约束,没有什么可以阻止我做类似的事情

<Dictionary>
    <DictionaryElement Key="1" Value="Foo"/>
    <DictionaryElement Key="1" Value="Bar"/>
</Dictionary>

然而people usually write wrappers使字典可序列化,但您需要确定它是否会以静默方式跳过重复键或在重复键上抛出异常。