2010-05-13 113 views
2

我是新來的WCF,有一個簡單的問題...枚舉,DataContracts和WCF問題

我DataContract類從一個返回枚舉類型消費者的它是公開的方法。

消費者能夠看到枚舉類型,實例化類型1的變量。

但是,我沒有爲服務中的枚舉提供[DataContract]和[EnumMember]。

我的問題是,爲什麼客戶端仍然能看到它? 我以爲我不得不將它作爲一個[DataContract]與業務對象一起序列化,不是嗎?

回答

1

是的 - 您必須 - 直到.NET 3.5 SP1。

微軟「解套」的規則,現在DataContractSerializer會像在XmlSerializer,如果你不把任何事情任何[DataContract][DataMember]屬性:它只是系列化所有的公共屬性和必要的類型。對於簡單的場景,這可能是一個「更簡單」的方法,但你也放鬆了對命名空間,排序等的大量控制 - 所以我更願意明確地應用這些屬性,只是爲了清楚表達(和文檔!)我的意圖。但隨着.NET 3.5 SP1,它不再需要由DataContractSerializer執行。

+0

感謝marc,已澄清它。 – NotNowJohn 2010-05-15 08:54:47