约束与验证?

时间:2008-11-12 22:55:21

标签: validation data-binding oop constraints

我正在使用Windows窗体数据绑定,实现IDataErrorInfo之类的接口。为了使其工作,允许域(或业务)对象处于无效状态。实际上,域对象需要保留用户输入的无效值,以使IDataErrorInfo正常工作。只要对象没有保持无效状态,我们就可以了。

然而,正如主题一栏所示,我想知道约束与验证之间是否存在差异。前者会阻止用户进行全部更改,后者是我上面描述的验证类型。

让我解释一下 - 如果您有PersonPerson的集合,则SSN属性。 PersonCollection上的SSN键入Persons,这意味着在集合中,不能有两个SSN具有相同的Person。如果我们在Persons上允许暂时无效状态,我们会引入一种情况,即集合中有两个SSN重复PersonCollection,尽管是暂时的。这可能导致另一个使用Person的对象查找带有重复SSN的{​​{1}}对象的问题,从而获得两个对象。

所以,对我而言,似乎某些类型的验证需要是约束而不是(更改后)验证。

思想?

1 个答案:

答案 0 :(得分:1)

举个例子,Person的部分验证应该是检查其SSN不重复的规则(顺便说一下:如果重复,你怎么知道哪一个是对的?)。

如果您遇到麻烦,因为PersonCollection实际上是由IDictionary键入的SSN,请等待Person验证后再添加到{{1}}采集。对象应该暂时无效,以便让您这样做。

有关验证的详细信息,请查看my answerBusiness Objects, Validation And Exceptions