誰能告訴我哪種方法是WPF驗證的更好方法。IDataErrorInfo vs驗證規則與異常
- 實施IDataErrorInfo的
- 創建有效性規則
- 拋出異常
在性能,內存泄漏,代碼的可維護性和再利用方面。
誰能告訴我哪種方法是WPF驗證的更好方法。IDataErrorInfo vs驗證規則與異常
在性能,內存泄漏,代碼的可維護性和再利用方面。
這是一種複雜的請求,說實話,它可能會根據偏好而不同。但是,這是我的理解:
ValidationRules比IDataErrorInfo還舊(我相信後者是在.NET 3.5中引入的)。僅憑這一點,似乎WPF團隊更喜歡IDataErrorInfo。但事實是,他們是爲不同的事情而建造的。如果您有MVVM或等效模式,那麼IDataErrorInfo在模型(例如負數年齡)中的錯誤優於錯誤,而驗證規則在視圖(例如,年齡爲1/8)中的錯誤優越。當然可以讓ValidationRules執行「業務邏輯」檢查,或讓IDataErrorInfo告訴你「unicode雪人不是一個有效的年齡」,但是你可能(可能)通過保持這種模式來獲得最佳的可維護性。
但是,除了初始測試之外,不要使用異常進行驗證,以查看您應該測試的確切條件。
使用異常進行錯誤處理不是個好主意。使用異常會降低性能。這是選擇和實現IDataErrorInfo或創建驗證規則的問題。
IDataErrorInfo的
驗證規則
我的意見是,對於常見驗證,如需要的字段驗證,電子郵件地址驗證您可以使用驗證規則。如果您需要執行自定義驗證(如範圍驗證),或者使用IDataerrorinfo進行自定義驗證。
今天讀到了IDataErrorInfo - 看起來比ValidationRule早 - 看起來IDataErrorInfo接口自Framework 1.1以來一直存在(http://msdn.microsoft.com/zh-cn/library/system.componentmodel.idataerrorinfo_properties (v = VS.71).aspx),但自Framework 3.0以來的ValidationRule。不要認爲它從根本上改變了你的答案 – GrahamMc 2011-10-03 16:18:04