Может ли кто-нибудь сказать мне, что лучше подходит для проверки в WPF.
- Реализация IDataErrorInfo
- Создание ValidationRule
- Выбрасывание исключений
с точки зрения производительности, утечек памяти, поддержки и повторного использования кода.
Может ли кто-нибудь сказать мне, что лучше подходит для проверки в WPF.
с точки зрения производительности, утечек памяти, поддержки и повторного использования кода.
Это своего рода сложный запрос, и, честно говоря, он, вероятно, будет отличаться в зависимости от предпочтений больше, чем что-либо еще. Но, здесь мое понимание:
ValidationRules старше, чем IDataErrorInfo (я считаю, что последний был введен в .Net 3.5). Исходя из этого, казалось бы, команда WPF предпочитает IDataErrorInfo. Но правда в том, что они созданы для разных вещей. Если у вас MVVM или эквивалентный шаблон, IDataErrorInfo превосходит ошибки в модели (например, отрицательный возраст), тогда как ValidationRules превосходят ошибки в представлении (например, возраст ☃). Конечно, возможно, чтобы проверки ValidationRules выполняли проверки "бизнес-логики" или чтобы IDataErrorInfo сообщал вам, что "снеговик с юникодом не является допустимым возрастом", но вы, вероятно, получите лучшую ремонтопригодность, придерживаясь этого шаблона.
Но не используйте исключения для проверки за пределами начального тестирования, чтобы узнать, какие именно условия вы должны тестировать.
Не рекомендуется использовать исключение для обработки ошибок. Использование исключения уменьшит производительность. Это вопрос выбора и реализации IDataErrorInfo или создания ValidationRule.
IDataErrorInfo
Правило проверки
Мое мнение заключается в том, что для обычной проверки, например, для проверки правильности поля, для проверки правильности адреса электронной почты вы можете использовать правило проверки. Если вам нужно выполнить выборочные проверки, например, проверку диапазона, или любую другую специальную проверку, используйте IDataerrorinfo.