Посмотрим, правильно ли я вас понял.
Вы можете использовать шаблон дизайна спецификации:
http://en.wikipedia.org/wiki/Specification_pattern
Вместо использования скрытой проверки, вы должны использовать что-то вроде реализации вышеуказанного шаблона проектирования, поскольку предоставляет вам более расширяемый способ добавления правил к состояниям объекта.
Например, вы бы определили спецификацию «StatusSpecification», которая «делает некоторые вещи для проверки правильности состояния». Результат может быть логическим.
Неисправный оценщик правил примет этот логический результат и примет необходимые решения (выбросить исключение? Попытаться восстановить? Конечное приложение? Просто уведомить пользователя об ошибке? Сообщить об ошибке?).
Подводя итог: вам нужно иметь некоторый «загрузчик спецификаций» и выполнять состояние объекта в соответствии с загруженными правилами для типа объекта. В конце концов, в этом случае вы собираетесь оценивать это состояние в одной строке (с точки зрения потребителя), и, возможно, логическим результатом может быть флаг вашего свойства.