Я бы настоятельно рекомендовал сделать рефакторинг для проверки перед установкой свойства.
У вас всегда мог быть метод, который был бы больше похож на:
T GetValidValueForProperty<T>(T suggestedValue, T currentValue);
или даже:
T GetValidValueForProperty<T>(string propertyName, T suggestedValue, T currentValue);
Если вы сделаете это, прежде чем устанавливать свойство, вы можете передать его в бизнес-логику для проверки, и бизнес-логика может вернуть значение свойства по умолчанию (ваше текущее поведение) ИЛИ (более разумно в большинстве случаев), вернуть currentValue, поэтому настройка не имела никакого эффекта.
Это будет использоваться больше как:
T OurProperty
{
get
{
return this.propertyBackingField;
}
set
{
this.propertyBackingField = this.GetValidValueForProperty(value, this.propertyBackingField);
}
}
Неважно, что вы делаете, но важно проверить, прежде чем изменить текущее значение. Если вы измените свое значение до того, как определите, является ли новое значение хорошим, вы напрашиваетесь на неприятности в долгосрочной перспективе.