Можете ли вы безопасно вернуть 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