【发布时间】:2010-09-22 02:11:38
【问题描述】:
我正在使用 Windows 窗体数据绑定,实现像 IDataErrorInfo 这样的接口。为了使其工作,域(或业务)对象被允许处于无效状态。实际上,域对象需要在用户输入时保留无效值,以便IDataErrorInfo 正常工作。只要对象不保持无效状态,我们就可以。
但是,正如主题行所暗示的那样,我想知道约束和验证之间是否存在差异。前者会阻止用户进行更改,后者是我上面描述的验证类型。
让我解释一下 - 如果你有一个 Person 的集合,而 Person 有一个 SSN 属性。 PersonCollection 键入SSN,这意味着在集合中,不能有两个Persons 具有相同的SSN。如果我们允许 Person 上的临时无效状态,我们会引入一种情况,即集合中有两个 Persons 和重复的 SSN,尽管是暂时的。这可能会导致另一个对象使用 PersonCollection 查找具有重复的 SSN 的 Person 对象并获得两个对象的问题。
因此,在我看来,某些类型的验证似乎需要成为约束而不是(更改后)验证。
想法?
【问题讨论】:
标签: validation data-binding oop constraints