我正在尝试序列化包含非原始值的字典。通过实现IXmlSerializable,我正在使用常规方法来序列化字典。在WriteXML方法中,我将非原始值转换为字符串(这种转换的方式不相关,但该部分正在工作)。在ReadXML内部,我将反序列化的值(字符串)转换回原始类型。
但是,这种方法会引发错误: InvalidOperationException:要进行XML可序列化,从IEnumerable继承的类型必须在其继承层次结构的所有级别都具有Add(System.Object)的实现。
我认为这是因为该值不是原始的。但是,它不应该是可序列化的,因为它不是序列化的(而是转换为字符串)。任何想法如何解决这个问题?
应该提到我使用泛型,运行时是Mono环境。 类定义如下所示:
public class SerializableRefDictionary<TKey, TValue> : Dictionary<TKey, TValue>, IXmlSerializable where TValue : NonPrimitiveObject
答案 0 :(得分:3)
似乎字典中的对象类型不是您出问题的原因。如果你有从Dictionary继承的类,你必须在你的类中实现
public void Add(object o);