【问题标题】:Serialize dictionary value to string将字典值序列化为字符串
【发布时间】:2012-10-19 11:13:07
【问题描述】:

我正在尝试序列化包含非原始值的字典。我通过实现 IXmlSerializable 使用常规方法来序列化字典。在 WriteXML 方法中,我将我的非原始值转换为字符串(转换方式不相关,但该部分正在工作)。在 ReadXML 中,我将反序列化的值(字符串)转换回原始类型。

但是,这种方法会引发错误: InvalidOperationException:要实现 XML 可序列化,从 IEnumerable 继承的类型必须在其继承层次结构的所有级别都具有 Add(System.Object) 的实现。

我认为这是因为该值不是原始的。但是,它不需要序列化,因为它没有序列化(而是转换为字符串)。任何想法如何解决这个问题?

应该提到我正在使用泛型,并且运行时是 Mono 环境。 类定义如下所示:

public class SerializableRefDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable where TValue : NonPrimitiveObject

【问题讨论】:

    标签: c# .net exception xml-serialization ienumerable


    【解决方案1】:

    似乎字典中的对象类型不是您问题的原因。如果您有从 Dictionary 继承的类,则必须在您的类中实现

    public void Add(object o);
    

    Have you seen this answer?

    【讨论】:

    • 感谢您的想法,但这并没有帮助。从完整的错误消息中,我了解到它实际上是在尝试序列化原始对象类型(这不是原始的)。
    • 仅供参考:序列化适用于原始对象(无需转换为字符串代码),无需实现 add 功能。
    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 2016-01-25
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    相关资源
    最近更新 更多