首页
新闻
会员
周边
捐助
园子
·
关注
·
粉丝
·
会员
·
随便看看
·
消息
欢迎,请先
登录
或者
注册
。
登录
/
注册
闪存
博客
发言
小组
投递
新闻
提问
博问
添加
收藏
文库
问题反馈
问题列表
我关注的
我的博问
博问标签
关于XML序列化
0
[已解决问题]
解决于 2007-11-23 14:22
如果要进行XML序列化的类中包含List<MyClass>属性,那么MyClass类必须包含无参构造函数,否则就会报错:序列化MyClass时出错,是这样吗?为什么呢?
.NET技术
C#
问题补充:
错了,报的错误应该是 序列化xxx时出错,xxx为要序列化的类
麒麟.NET
|
老鸟四级
|
园豆:
3614
提问于:2007-11-23 11:02
显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
<
>
分享
分享您的问题
最佳答案
0
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 序列化的示例。
大约在冬季
|
菜鸟二级
|
园豆:230
|
2007-11-23 13:32
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
其他回答(3)
0
使用XmlSerializer序列化时 要序列化的类必须有一个默认的无参构造函数,用于序列化过程中创建新的对象。而且相应的属性必须为可读可写的。 使用System.Runtime.Serialization.Formatters.Soap.SoapFormatter则不需要默认的无参构造函数。
Anders Cui
|
园豆:1570
(小虾三级)
|
2007-11-23 13:33
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
0
呵呵,没有尝试过,不太清楚。 但是,我实现的一套Serialization机制中也需要被序列化的对象有默认构造函数。否则,很难确定怎样构造这个对象。 .NET 提供了一个TypeConverter.CreateInstance的支持,不知道系统的XmlSerializer有没有使用这套机制。你可以尝试一下。
Colin Han
|
园豆:3041
(老鸟四级)
|
2007-11-23 13:35
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
0
不是的,无餐构造函数几十你不写,编译器会自动生成,所以结果是不会报错的,我确定!
拖拉机CEO
|
园豆:202
(菜鸟二级)
|
2014-10-23 22:41
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要
登录
以后才能回答,未注册用户请先
注册
。