gpt4 book ai didi

.net - DataContract 与 XmlType

转载 作者:数据小太阳 更新时间:2023-10-29 01:55:13 25 4
gpt4 key购买 nike

作为尝试学习 WCF 的一部分,我正在阅读有关序列化的内容。我正在努力了解如何在 .NET 3.5 中控制序列化。例如,我有一个带有一些公共(public)属性的简单类。通过将 DataContract 属性添加到该类,我可以在序列化时控制命名空间和类的名称。

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

我实现了这两种方法,并将 ServiceContract 中的类用作接口(interface)调用的一部分。然后,我使用 Http 分析器查看各种对象是如何序列化的,我注意到 XmlType 根本不影响 http 中的 xml。

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

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

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

最佳答案

DataContractSerializer 的要点是控制序列化的细节。相反,我们的想法是将您的数据序列化为一种可以被最多客户端使用的形式。

与其关注模式的细节,不如根据要发送和接收的数据成员定义数据契约。它是对数据的非常抽象的描述。它被序列化为一种非常简单的格式,反射(reflect)了抽象描述。

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

关于.net - DataContract 与 XmlType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com