我正在使用Windows Forms Databinding,實現像IDataErrorInfo
這樣的接口。爲了使其發揮作用,域(或業務)對象被允許處於無效狀態。實際上,域對象需要在用戶輸入IDataErrorInfo
才能正常工作時保留無效值。只要對象沒有被保持在無效狀態,我們就可以。約束與驗證?
但是,由於主題行暗示我想知道是否有限制和驗證之間的區別。前者將阻止用戶在AT ALL上進行更改,後者是我上面描述的驗證類型。
讓我解釋一下 - 如果你有一個集合Person
和Person
有一個SSN
屬性。 PersonCollection
的鍵是SSN
,意思是在集合中,不能有兩個Persons
與SSN
相同。如果我們在Person
上允許臨時無效狀態,我們介紹在集合中有兩個Persons
的副本SSN
的情況,儘管是暫時的。這可能會導致另一個對象與PersonCollection
一起使用,尋找具有重複的SSN
的Person
對象的問題,從而獲得兩個對象。
因此,對我而言,似乎某些類型的驗證需要約束而不是(更改後)驗證。
想法?