2010-10-19 47 views
2

我剛纔已經做了一些測試,我已經manged得到ReadAsDataContract工作的Response.Content方法...WCF REST:ReadAsDataContract使用類「沒有」裝修屬性DataContract和DataMember

的事情,真的是令人困惑是我認爲它不應該工作!由於我的類沒有使用DataContact或DataMember屬性進行修飾。

我很困惑,讀它似乎是非常重要的與DataContract和DataMember屬性來裝飾你的類(用於ReadAsDataContract)網絡..

各地的各種教程,但我的是不是和我把一個斷點在調用ReadAsDataContract的線上,當然我有一個LIST返回正確的細節。這裏是行

List<Models.Question> questions = response.Content.ReadAsDataContract<List<Models.Question>>(); 

Models.Question沒有裝飾的屬性。我與我的服務器和我的客戶端共享我的模型組件。

有人能告訴我爲什麼,因爲我知道你需要在類和

我使用Visual Studio 2010和.NET 4個成員(我還沒有)添加屬性它工作時儘量 - ermmm我似乎記得,這些屬性不再需要 - 這是真的嗎?

真的很期待有任何幫助。

我討厭的東西的工作,他們不應該:-),但當然我也很討厭這時候不工作的時候就應該:-)

的感謝!

回答

3

有人能告訴我爲什麼它工作時 據我知道你需要添加類上的 屬性和成員 (我還沒有)

看來「負擔「將DataContract放在每個成員的數據類和[DataMember]上對於全世界的程序員來說都太過分了 - 所以微軟在.NET 3.5 SP1中改變了DataContractSerializer的行爲。

從那時起,DCS就像老式的XmlSerializer一樣,沒有裝飾的類 - 它會愉快地序列化所有公共成員和屬性。

問題當然是:你放棄了屬性給你的所有附加控制,例如爲數據契約定義一個XML命名空間,定義數據成員的順序等等 - 但它不起作用屬性。

所以這是一個已知和自願引入的行爲。我仍然相信你應該在你的意圖明確和標記使用[DataContract]數據類,然後用[數據成員(這也給了你忽略了一個或多個公共成員而不是將其系列化的能力)的成員。

+0

感謝marc的詳細解釋。非常感激 – Martin 2010-10-22 11:16:23

1

根據this所有類型都可以被序列化,而不僅僅是具有DataContractAttribute的類型。

+0

是的,確實是..感謝評論。 – Martin 2010-10-22 11:17:39

相關問題