Если вы хотите использовать готовые функциональные возможности, но хотите расширить их, взгляните на мой ответ здесь на вопрос об IDataError.
В основном я использую аннотации данных и связыватель моделей для более сложной логики. Я нашел, что это довольно чистый способ и позволяет мне оставаться в рамках того, что предоставляет MS.
Я объясняю, как использовать связыватель моделей для добавления проверки на уровне класса вашей модели без необходимости использования IDataError
- что, как вы видели здесь, может быть довольно неуклюжим. Он по-прежнему позволяет использовать атрибуты [Обязательные] или любые другие пользовательские атрибуты проверки, но позволяет добавлять или удалять отдельные ошибки модели. Чтобы узнать больше о том, как использовать аннотации данных, я настоятельно рекомендую этот пост от Скотта Гу .