【发布时间】:2010-10-12 01:36:14
【问题描述】:
作为尝试学习 WCF 的一部分,我正在阅读有关序列化的内容。我正在努力理解如何在 .NET 3.5 中控制序列化。例如,我有一个带有一些公共属性的简单类。通过将 DataContract 属性添加到该类,我可以控制命名空间和序列化类的名称。
另一方面,我可以添加 Serializable 属性(可能甚至不需要)和 XmlType 属性,这也允许我控制命名空间和用于序列化类的名称。
我实现了这两种方法,并将 ServiceContract 中的类用作接口调用的一部分。然后我使用 Http 分析器查看各种对象是如何序列化的,我注意到 XmlType 根本没有影响 http 中的 xml。
我整天都在努力理解这一点。我错过了什么?
更新: 我确实了解两者之间的区别以及它们存在的原因。我只是不明白为什么我不能用 XmlType 或(只是尝试了 XmlRoot)影响生成的 xml。
基本上,您可以通过实现 IXmlSerializable 来控制序列化的所有细节,除了命名空间和顶级元素的名称。为此,我假设您需要 XmlType 或 XmlRoot 属性。我错了吗?
【问题讨论】:
-
XmlRoot、XmlType、IXmlSerializable都与XML Serializer相关,对数据契约序列化没有影响。