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