Когда вы устанавливаете значение свойства, вы можете проверить его до или после обновления внутреннего значения.
Если проверка выполнялась раньше, вы можете выдать исключение, если новое значение недопустимо. Тогда объект всегда находится в действительном состоянии.
Если после подтверждения, требуется отменить (то есть через IEditableObject ), поэтому пользователь может отменить редактирование в любое время. У нас также есть возможность либо выбросить здесь исключение, либо выставить ошибки через IDataErrorInfo .
Я не думаю, что IDataErrorInfo имеет смысл, если выполняется проверка перед набором.
Некоторые также могут утверждать, что исключение не оправдано в сценариях проверки.
Проверка после прекрасно работает в сценариях, где пользовательский объект содержится в BindingList и устанавливается в качестве источника данных для сетки.
Проверка до того, как все будет работать нормально с сетками, но вам нужно будет сгенерировать исключение, чтобы сообщить о сбое установки значения свойства в сетку данных (без большого количества дополнительного кода)
Мне также не нравится, когда мои доменные объекты реализуют IEditableObject и IDataErrorInfo , INotifyPropertyChanged и т. Д. Он оставляет объект домена загроможденным дополнительными проблемами. Но это кажется неизбежным, если вы хотите поместить хороший с привязкой данных. Я мог бы создать оболочку, возможно, DTO, но я не слишком без ума от необходимости писать в основном фиктивный дополнительный код только для поддержки этих битов привязки данных.
Как вы проверяете объекты (предпочтительно в контексте привязки данных и пользовательского интерфейса)?