wcf - 数据契约(Contract)和数据成员

标签 wcf datacontractserializer

有没有办法告诉 WCF 在返回时序列化整个类?我真的必须将 DataMember 添加到每个属性吗?

最佳答案

从 .NET 3.5 SP1 开始,您不必再这样做了。

如果您没有任何[DataContract][DataMember]属性,DataContractSerializer 类的行为类似于旧的 XmlSerializer:它将序列化类中列出的所有公共(public)读/写属性。

但是,您确实会在此过程中丢失一些东西:

  • 因为你没有[DataMember]属性,您不能再定义字段的顺序 - 它们将按出现的顺序序列化
  • 您不能省略公共(public)属性(因为在所有其他属性/字段上都需要 [DataMember])
  • 您不能将属性定义为 Required (这将再次出现在 [DataMember] 属性上)
  • 你的类现在需要有一个公共(public)的、无参数的构造函数(数据契约通常不需要)

  • 阅读 all about it in detail来自 Pluralsight 的 Aaron Skonnard。

    关于wcf - 数据契约(Contract)和数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681842/

    相关文章:

    c# - DataContractSerializer - 命名空间问题

    c# - 序列化UTC时间c#

    c# - WCF 在没有 "set "的属性上阻塞。任何解决方法?

    c# - .Net 4.5+ 中是否仍然存在 C# WCF Proxy ClientBase<T> Disposal 问题

    wcf - 'WCF' 是什么意思?

    jquery - 测试/构建 MSDN 文章 "JSON with Padding (AJAX) "

    wcf - 如何强制 WCF 使用所需的方法参数(minoccurs ="1")自动生成 WSDL?

    asp.net-core - 对 SSPI 的调用失败 GSSAPI 操作失败并出现错误 - 提供了无效的状态代码(SPNEGO 找不到协商机制)

    wcf - 何时使用 DataContract 和 DataMember 属性?

    azure - 将非 DataContract 类发送到 Azure Service Fabric Actor