加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – DataContract与XmlType

发布时间:2020-12-16 23:16:54 所属栏目:百科 来源:网络整理
导读:作为尝试学习WCF的一部分,我正在阅读序列化.我正在努力了解如何在.NET 3.5中控制序列化.例如,我有一个带有一些公共属性的简单类.通过将DataContract属性添加到该类,我可以控制命名空间和类序列化时的名称. 另一方面,我可以添加Serializable属性(可能甚至不需
作为尝试学习WCF的一部分,我正在阅读序列化.我正在努力了解如何在.NET 3.5中控制序列化.例如,我有一个带有一些公共属性的简单类.通过将DataContract属性添加到该类,我可以控制命名空间和类序列化时的名称.

另一方面,我可以添加Serializable属性(可能甚至不需要)和XmlType属性,这也允许我控制命名空间和用于序列化类的名称.

我实现了这两种方法,并在ServiceContract中使用该类作为接口调用的一部分.然后我使用Http分析器来查看各种对象是如何被serizal化的,我注意到XmlType根本不影响http中的xml.

我整天都试图理解这一点.我错过了什么?

更新:
我确实理解两者之间的区别以及它们为何存在.我只是不明白为什么我不能用XmlType影响生成的xml或者(只是试过它XmlRoot).

基本上,您可以通过实现IXmlSerializable来控制序列化的所有细节,除了名称空间和顶级元素的名称.为此,我假设您需要XmlType或XmlRoot属性.我错了吗?

解决方法

DataContractSerializer的要点是不控制序列化的细节.相反,我们的想法是将您的数据序列化为可由最大数量的客户端使用的表单.

可以根据要发送和接收的数据成员来定义数据协定,而不是关注模式的细节.这是一个非常抽象的数据描述.它被序列化为一种非常简单的格式,反映了抽象的描述.

只有在您绝对需要控制要序列化或反序列化的XML的详细信息时,才应使用XML Serializer.当您不需要那么多控制时,请坚持使用Data Contract Serializer.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读