IDataErrorInfo vs IValidatableObject?

В настоящее время мои бизнес-объекты реализуют IDataErrorInfo. Поскольку я намереваюсь использовать эти библиотеки в ASP.NET MVC 3, я полагаю, что я должен реализовать IValidatableObject, а также, а не вместо.

Работает ли WPF с IValidatableObject?

Как данные DataAnnotations вписываются в изображение?

Ответ 1

IValidatableObject - это интерфейс для проверки ошибок всего уровня объекта. Вы несете ответственность за ее реализацию, проверяя аннотации данных или другие методы. MVC имеет встроенную поддержку аннотаций данных, поэтому вы можете просто использовать их без дополнительной поддержки.

Наоборот, wpf ТОЛЬКО ПОДДЕРЖИВАЕТ IDataErrorInfo. Он не поддерживает IValidateObject или DataAnnotations.

Однако я реализовал объект-оболочку, который добавляет поддержку DataAnnotation в Wpf к обернутому объекту. Он также обеспечивает реализацию IPropertyChanged. См. Инструмент проверки достоверности для Wpf и Silverlight на codeplex

Ответ 2

Я реализую IValidatableObject в сущности, обертывая ее с помощью IDataErrorInfo в модели представления (автоматически через базовый класс) для WPF. Мои объекты будут хорошо работать в WPF, MVC и новом EF CTP5, который также награждает IValidatableObject.