Несколько мыслей по этой проблеме:
Если ваше свойство вызывает событие PropertyChanged, возможно, существует механизм, который использует это для его проверки. Например, в сочетании с привязкой данных. Если у вас нет PropertyChanged, вам нужно явно вызвать Validate где-нибудь, если только вы не используете AOP.
Выполнение кода, когда вы просто устанавливаете значение, потребует AOP. В стандартные библиотеки .Net не включена технология AOP, вам придется интегрировать ее (например, Spring). AOP требует генерации кода или улучшения байт-кода. Так что это не тривиальная вещь.