我正在使用 Windows 窗体数据绑定,实现类似IDataErrorInfo
. 为了使其工作,域(或业务)对象被允许处于无效状态。实际上,域对象需要在用户输入时保留无效值IDataErrorInfo
才能正常工作。只要对象不处于无效状态,我们就可以了。
但是,正如主题行所暗示的那样,我想知道约束和验证之间是否存在差异。前者会阻止用户进行更改,后者是我上面描述的验证类型。
让我解释一下——如果你有一个集合Person
并且Person
有一个SSN
属性。是PersonCollection
keyed on SSN
,意思是在集合中,不能有两个Persons
相同的SSN
。如果我们在 上允许临时无效状态,我们会引入一种情况,即集合Person
中有两个Persons
重复的情况,尽管是暂时的。SSN
这可能导致另一个对象使用PersonCollection
,寻找Person
具有重复对象的对象SSN
,获取两个对象的问题。
所以,对我来说,似乎某些类型的验证需要是约束而不是(更改后)验证。
想法?