3 回答
TA贡献1998条经验 获得超6个赞
XML 序列化注意事项 使用 XmlSerializer 类时,应考虑下列情况: Sgen.exe 工具专门用于生成序列化程序集,以获得最佳性能。 序列化数据只包含数据本身以及类的结构。不包括类型标识和程序集信息。 只能序列化公共属性和字段。如果需要序列化非公共数据,请使用 BinaryFormatter 类而不是 XML 序列化。 类必须有一个将由 XmlSerializer 序列化的默认构造函数。 不能序列化方法。 XmlSerializer 可以以不同方式处理实现 IEnumerable 或 ICollection 的类,条件是这些类满足某些要求,如下所示。 实现 IEnumerable 的类必须实现带单个参数的公共 Add 方法。Add 方法的参数必须与从 GetEnumerator 方法返回的 IEnumerator.Current 属性所返回的类型一致(多态)。 除实现 IEnumerable 外还实现 ICollection 的类(如 CollectionBase)必须有一个值为整数的公共 Item 索引属性(在 C# 中为索引器),并且必须有一个整数类型的公共 Count 属性。传递给 Add 方法的参数必须与从 Item 属性返回的类型相同或与该类型的某个基的类型相同。 对于实现 ICollection 的类,要序列化的值将从索引的 Item 属性检索,而不是通过调用 GetEnumerator 来检索。另外,除返回另一个集合类(实现 ICollection 的集合类)的公共字段之外,将不序列化其他公共字段和属性。
TA贡献1785条经验 获得超4个赞
呵呵,没有尝试过,不太清楚。 但是,我实现的一套Serialization机制中也需要被序列化的对象有默认构造函数。否则,很难确定怎样构造这个对象。 .NET 提供了一个TypeConverter.CreateInstance的支持,不知道系统的XmlSerializer有没有使用这套机制。你可以尝试一下。
- 3 回答
- 0 关注
- 238 浏览
添加回答
举报