为了账号安全,请及时绑定邮箱和手机立即绑定

关于XML序列化

关于XML序列化

千万里不及你 2018-07-23 13:10:10
如果要进行XML序列化的类中包含List<MyClass>属性,那么MyClass类必须包含无参构造函数,否则就会报错,序列化xxx时出错,xxx为要序列化的类,是这样吗?为什么呢?
查看完整描述

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 的集合类)的公共字段之外,将不序列化其他公共字段和属性。

查看完整回答
反对 回复 2018-07-25
?
九州编程

TA贡献1785条经验 获得超4个赞

呵呵,没有尝试过,不太清楚。 但是,我实现的一套Serialization机制中也需要被序列化的对象有默认构造函数。否则,很难确定怎样构造这个对象。 .NET 提供了一个TypeConverter.CreateInstance的支持,不知道系统的XmlSerializer有没有使用这套机制。你可以尝试一下。

查看完整回答
反对 回复 2018-07-25
  • 3 回答
  • 0 关注
  • 233 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信