首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataContract对XmlType

DataContract对XmlType
EN

Stack Overflow用户
提问于 2009-03-08 19:10:58
回答 4查看 4.1K关注 0票数 6

作为学习WCF的一部分,我正在阅读有关序列化的内容。我很难理解如何在.NET 3.5中控制序列化。例如,我有一个带有一些公共属性的简单类。例如,通过向该类添加DataContract属性,可以在序列化类时控制名称空间和类名。

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

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

我一整天都在努力理解这一点。我遗漏了什么?

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

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

EN

回答 4

Stack Overflow用户

发布于 2009-03-08 19:25:17

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

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

只有当您绝对需要控制要序列化或反序列化的XML的详细信息时,才应该使用XML序列化程序。当您不需要那么多的控制时,请继续使用数据契约序列化程序。

票数 5
EN

Stack Overflow用户

发布于 2009-03-08 19:13:29

XmlSerializer与DataContractSerializer: Wcf中的序列化

编辑

使用.NET XML属性自定义.NET对象XML序列化。让您的数据序列化为您首先想要的表单。然后放置XmlSerializerFormat属性。

代码语言:javascript
复制
[ServiceContract]
[XmlSerializerFormat]
public interface MyService
{
    [OperationContract]
    [XmlSerializerFormat]
    void MyMethod();
}
票数 2
EN

Stack Overflow用户

发布于 2009-03-09 05:42:10

澄清点:可序列化属性与XmlSerialization无关。可序列化属性与Runtime.Serialization有关。很困惑,是的。

.NET中有太多的序列化程序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/624111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档