Я работаю с Windows Forms Databinding, реализуя интерфейсы, такие как IDataErrorInfo
. Чтобы это работало, доменному (или бизнес-объекту) разрешено находиться в недопустимом состоянии. Фактически, объект домена должен сохранить недопустимое значение, поскольку пользователь ввел его для IDataErrorInfo
для правильной работы. Пока объект не сохраняется в недействительном состоянии, мы в порядке.Ограничение против валидации?
Однако, поскольку строка темы предполагает, что мне было интересно, существует ли разница между контратацией и валидацией. Первое препятствовало бы пользователю вносить изменения во ВСЕ, более поздний тип проверки, описанный выше.
Позвольте мне объяснить - если у вас есть коллекция Person
и Person
имеет SSN
. PersonCollection
вводится на основе SSN
, что означает, что в коллекции не может быть двух Persons
с тем же SSN
. Если мы допустим временное недействительное состояние на Person
, введем ситуацию, в которой есть два Persons
с дубликатом SSN
в коллекции, хотя и временно. Это может привести к проблемам, когда другой объект работает с PersonCollection
, ища объект Person
с дублированным SSN
, получая два объекта.
Итак, для меня, кажется, что некоторые типы валидаций должны быть ограничениями, а не (после изменения) валидации.
Мысли?