【问题标题】:Enums, DataContracts and WCF question枚举、DataContracts 和 WCF 问题
【发布时间】:2010-05-13 09:06:16
【问题描述】:

我是 WCF 新手,有一个简单的问题...

我的 DataContract 类从其公开的方法之一向使用者返回 Enum 类型。

消费者能够看到枚举类型,并实例化该类型的变量。

但是,我没有为服务中的枚举提供 [DataContract] 或 [EnumMember]。

我的问题是,为什么客户仍然可以看到它? 我认为我必须将其设为 [DataContract] 才能与业务对象一起序列化,不是吗?

【问题讨论】:

    标签: wcf enums datacontractserializer datacontract


    【解决方案1】:

    是的 - 你必须 - 直到 .NET 3.5 SP1。

    微软“放宽”了规则,现在DataContractSerializer 的行为类似于XmlSerializer,如果您不将任何[DataContract][DataMember] 属性放在任何东西上:它只会简单地序列化所有公共属性和必要的类型。

    虽然对于简单场景来说这可能是一种“更简单”的方法,但您也会对命名空间、排序等进行大量控制 - 所以我更愿意仍然显式应用这些属性,只是为了清楚地表达(和记录!)我的意图。但在 .NET 3.5 SP1 中,DataContractSerializer 不再需要和强制执行它。

    【讨论】:

    • 谢谢马克,这已经澄清了。
    【解决方案2】:

    如果我们不将任何 [DataContract] 和 [DataMember] 属性放在任何东西上,它将自动序列化所有公共属性和必要的类型。此功能受更高版本的 .NET3.5 SP1 支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 2013-01-10
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多