Какой наиболее распространенный и гибкий способ проверки валидности модели? Должна ли модель сама проверять себя? Ну и применительно к WPF, как отображать ошибки в данных?
Потратив на данный вопрос несколько дней, пришел к выводу, что наиболее верный способ - это реализация IDataErrorInfo
объектами модели. При этом получаем полную поддержку вывода ошибок в интерфейсе пользователя. Почти без какой-либо дополнительной работы. Об этом можно почитать тут и тут.
Однако непонятно, что делать, если объект модели, реализующий IDataErrorInfo
, содержит свойство типа IDataErrorInfo
. И это главный мой вопрос :)
Так же есть несколько фреймворков для валидации данных и ввода пользователя:
- .net Validation Framework. К недостаткам можно отнести то, что модели, построенные на основе его классов, не имеют конструкторов по умолчанию, ди вообще тянут за собой длинный хвост. Достоинства: интересная система реализации правил валидации в виде атрибутов к свойствам объекта модели.
- ValidationAspects. Тут просто имеет место магическое AOP, вот и упомянул.
Из орудий более крупного калибра можно упомянуть: