Прежде всего, вам, вероятно, следует использовать базовый универсальный класс для конвертеров, который имеет строго типизированный метод virtual
, и в этом случае вы не имеете дело с object
, а вместо этого с bool
внутри конвертера. код.
Если мы застряли со значением объекта, я защищаю читаемый и поддерживаемый код и короткие функции, которые заменяют if, которые могут стать неясными в будущем.
Так что я могу использовать что-то вроде
{
if(IsValueBoolAndTrue(value){
return ErrorColor;
}
else {
return DefaultColor;
}
}
Color.Red
и null
являются константами, которые также делают их намерение неясным. Также определение этих двух констант может помочь в обратном преобразовании во втором методе IValueConverter
Хотя метод IsValueBoolAndTrue
технически делает то же самое, что и true.Equals(value)
(внутри себя он может вызвать это на самом деле), наличие специального метода поможет человеку, который смотрит на это в будущем, не выполнять «рефакторинг», который нарушит код, потому что он будет смотреть на true.Equals(value)
без комментариев и думать, что он на самом деле не является чем-то подходящим, или будет думать, что его не элегантный код, и рефакторинг его, не оставляя его функциональность одинаковой.