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

关于XML序列化

关于XML序列化

C#
函数式编程 2018-12-16 09:04:54
如果要进行XML序列化的类中包含List<MyClass>属性,那么MyClass类必须包含无参构造函数,否则就会报错:序列化MyClass时出错,是这样吗?为什么呢?
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超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 的集合类)的公共字段之外,将不序列化其他公共字段和属性。有关示例,请参见 XML 序列化的示例。

查看完整回答
反对 回复 2018-12-20
  • 2 回答
  • 0 关注
  • 580 浏览

添加回答

举报

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