我有問題找到一個通用的解決方案來處理WPF和WCF上的枚舉字段,我需要一點幫助。讓我們用一個例子解釋:未定義的枚舉和WPF組合框和WCF序列化
當創建一個性別枚舉值男,女]一個人,我看到三個posibilites:
男是默認 - >有兩種posibilities但一個是默認。沒有問題結合ComboBox.SelectedValue與WCF序列化沒有問題,只要沒有女性感到ofended :)
((性別)(3))不定值是默認 - >有兩種posibilities但在開始用戶被迫選擇一個。 ComboBox.SelectedValue正確設置SelectedIndex = -1,但WCF拋出: 枚舉值'3'對'Sex'類型無效,無法序列化。如果類型具有DataContractAttribute屬性,請確保存在必要的枚舉值並使用EnumMemberAttribute屬性標記。
性屬性可爲空 - >它可以設置性別和你甚至可以取消它一旦你選擇一個。
不幸的是,情況2是最常見的一種,但我們沒有看到一個簡單的方法來處理它不做像黑客:
- 定義「未知」的價值性,這個值對實體無效,我會考慮它是否不是最常見的情況。
- 將枚舉標記爲[Flags],因此WCF可以將「Male,Female」編碼爲未知。
- 用類似[ComboHintUnkwnownOnNew]的裝飾來裝飾性別。
- Set SelectedIndex = -1,同時保持綁定一些WPF中的方式。
我知道是一個思想設計的決定,而不是一個具體的問題,但我希望得到一些幫助。
你能解釋一下你是如何在這裏使用WCF並提供一些XAML以及回答?我沒有遇到過通過WCF發送並顯示在WPF中的枚舉屬性的任何問題。如果枚舉未定義,那麼顯然必須強制用戶在序列化之前選擇一個值,但是要寫出這必須在開始時發生。你能用一些代碼/ XAML來解釋嗎? – Holstebroe 2010-09-21 11:23:21
由於構建通用解決方案的目的,我們希望將不完整的實體發送到服務器,例如要知道實體是否已授權或可用的操作。 很難挑選一段簡單的代碼,但是需要的是能夠在實體屬性本身編碼樹描述的解決方案,並且知道用戶是否選擇了一架飛機。 – Olmo 2010-09-22 11:27:23