Enums,DataContracts和WCF问题

时间:2010-05-13 09:06:17

标签: wcf enums datacontractserializer datacontract

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

是的 - 您必须 - 最多支持.NET 3.5 SP1。

微软“放松”了规则,现在DataContractSerializer的行为与XmlSerializer类似,如果您没有在任何内容上添加任何[DataContract][DataMember]属性:只需序列化所有公共属性和必要类型。

虽然这对于简单场景可能是一种“更简单”的方法,但你也失去了对命名空间,排序等的大量控制 - 所以我更喜欢仍然明确地应用这些属性,只是为了清楚地表达(并记录!)我的意图。但是使用.NET 3.5 SP1,DataContractSerializer不再需要和强制执行它。

答案 1 :(得分:0)

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