Можете ли вы безопасно вернуть null из пользовательского ValidationRule, чтобы показать, что проверка не выполнена?

Я реализую кастом ValidationRule для WPF DataBinding. Для этого я просто наследую от ValidationRule и реализовать один или несколько абстрактных или виртуальных методов. Это метод, который я реализую:

public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo, System.Windows.Data.BindingExpressionBase owner)

ValidationResult объект, который я возвращаю, должен иметь true или же false для IsValid имущество. Логически мне кажется, что здесь отсутствует третий вариант "Неизвестно" или "Не определено". В некоторых случаях валидатор может не применяться.

Так что я должен вернуть в этих случаях? Могу ли я благополучно вернуться null?

1 ответ

Решение

НЕТ!! Валидатор не должен возвращаться null от любых перегрузок Validate метод, и, прежде чем вы спросите, не должны также генерировать исключения. В любом из этих случаев ваше приложение столкнется с необработанным исключением в коде фреймворка и, возможно, завершится сбоем.

Так что просто примите менее совершенную семантику и вернитесь ValidationResult.ValidResult если вы хотите, чтобы ваш пользовательский валидатор был по существу неактивным.

Источник: проверено на.NET 4.5

Другие вопросы по тегам