我是WCF的新手,有一个简单的问题......
我的DataContract类从其中一个公开的方法向使用者返回一个Enum类型。
使用者能够看到枚举类型,并实例化该类型的变量。
但是,我没有为服务中的枚举提供[DataContract]或[EnumMember]。
我的问题是,为什么客户仍然可以看到它? 我以为我必须将它作为[DataContract]才能与业务对象一起序列化,不是吗?
答案 0 :(得分:1)
是的 - 您必须 - 最多支持.NET 3.5 SP1。
微软“放松”了规则,现在DataContractSerializer
的行为与XmlSerializer
类似,如果您没有在任何内容上添加任何[DataContract]
和[DataMember]
属性:只需序列化所有公共属性和必要类型。
虽然这对于简单场景可能是一种“更简单”的方法,但你也失去了对命名空间,排序等的大量控制 - 所以我更喜欢仍然明确地应用这些属性,只是为了清楚地表达(并记录!)我的意图。但是使用.NET 3.5 SP1,DataContractSerializer
不再需要和强制执行它。
答案 1 :(得分:0)
如果我们不在任何内容上放置任何[DataContract]和[DataMember]属性,它将自动序列化所有公共属性和必要类型。此版本支持更高版本的.NET3.5 SP1。